sed를 사용하여 다른 문자열을 한 번에 검색/바꾸기

sed를 사용하여 다른 문자열을 한 번에 검색/바꾸기

저는 sed를 사용하여 PHP 파일에서 구성 지시문을 찾습니다. 기본적으로 문자열을 설정 하고 database_name_hereconfig -sample.php에서 적절한 값을 설정해야 합니다(그리고 파일 이름을 config.php로 변경해야 합니다). 현재 솔루션은 sed를 세 번 사용하여 출력을 임시 파일로 리디렉션합니다.username_herepassword_here

sed -e 's/database_name_here/foo/g' config-sample.php > /tmp/config.1
sed -e 's/username_here/bar/g' /tmp/config.1 > /tmp/config.2
sed -e 's/password_here/bat/g' /tmp/config.2 > config.php

두 개의 임시 파일을 만들지 않고도 어떻게 동일한 결과를 얻을 수 있는지 궁금합니다.

답변1

-esed에 여러 매개변수를 전달할 수 있습니다 . 각 행에서 각 변환을 차례로 적용합니다.

<config-sample.php sed -e 's/database_name_here/foo/g' -e 's/username_here/bar/g' -e 's/password_here/bat/g' >config.php

일부 구현에서는 구분 기호를 사용하여 여러 명령을 구분할 수도 있지만 ;항상 그런 것은 아니며 종료 줄 바꿈이 필요한 명령에서는 작동하지 않습니다. 전부는 아니지만 대부분의 구현에서는 여러 명령을 개행 문자로 구분할 수 있습니다.

여러 명령이 필요한 경우 임시 파일을 사용할 필요가 없으며 파이프를 사용할 수 있습니다.

<config-sample.php sed -e '…' | grep -v '^#' >config-without-comments.php

관련 정보