파일의 구성 변수를 변경하려고 합니다. 기본적으로 파일에는 다음 형식의 여러 줄이 있습니다.
$config['var'] = 'val';
원하는 출력:
$config['var'] = 'new_value';
이것이 내가 지금까지 생각해낸 것입니다:
sed -i -r "s/^\$config\['var'\]\s*=\s*(..*);$/\1'new_value'/g" config.cfg
나는 여기에서 수많은 유사한 질문에 대한 답변을 시도했지만 운이 없었습니다. 내가 뭘 잘못하고 있는지 단서가 있습니까?
답변1
검색 패턴에 config
또는 를 포함할 필요는 없습니다 . before를 var
사용하면 으로 시작하는 줄 내에서만 검색 및 바꾸기를 수행할 수 있습니다 . 이렇게 하면 전체 작업이 더 쉬워집니다./^$config\['var'\]/
s/…/…/
$config['var']
sed "/^\$config\['var'\]/ s/=.*;/= 'new_value';/"
$
큰따옴표로 인해 메모가 이스케이프되었습니다. 에 도달하면 더 이상 이스케이프되지 않습니다 sed
. 도구는 끝이 아니기 때문에 문자 그대로 처리합니다.