sed - "/"가 포함된 텍스트 찾기 및 바꾸기

sed - "/"가 포함된 텍스트 찾기 및 바꾸기

sed가 포함된 텍스트를 검색하고 바꾸는 방법은 무엇입니까 /?

현재 작동하지 않는 다음 명령을 사용하고 있습니다

sed -i "s/queue_directory = /var/spool/postfix-secondary/queue_directory = /var/spool/postfix-$newnumber/g" /etc/postfix-$newnumber/main.cf

답변1

한 가지 방법은 이외의 다른 구분 기호를 선택하는 것입니다 /. 예를 들어 다음을 사용합니다 |.

sed -ie "s|queue_directory = /var/spool/postfix-secondary|queue_directory = /var/spool/postfix-$newnumber|g" /etc/postfix-$newnumber/main.cf

또 다른 방법은 백슬래시를 다른 슬래시로 이스케이프 처리하는 것입니다.

sed -ie "s/queue_directory = \/var\/spool\/postfix-secondary/queue_directory = \/var\/spool\/postfix-$newnumber/g" /etc/postfix-$newnumber/main.cf

특정 용도에 대한 두 가지 제안이 더 있습니다. 첫째, 동일한 줄에서 대체가 여러 번 발생할 것으로 예상하지 않는 한 g 플래그가 필요하다고 생각하지 않습니다. 둘째, 지시문을 변경하려고 하면 이전 값이 무엇이었든 관계없이 지시어가 변경될 가능성이 높습니다. 예를 들어:

sed -ie "s|^queue_directory =.*|queue_directory = /var/spool/postfix-$newnumber|" /etc/postfix-$newnumber/main.cf

관련 정보