sed: 일치하는 줄에서 하나 이상의 그룹 값을 바꿉니다.

sed: 일치하는 줄에서 하나 이상의 그룹 값을 바꿉니다.

파일의 구성 변수를 변경하려고 합니다. 기본적으로 파일에는 다음 형식의 여러 줄이 있습니다.

$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. 도구는 끝이 아니기 때문에 문자 그대로 처리합니다.

관련 정보