Sed를 사용하여 문자열 변경

Sed를 사용하여 문자열 변경

다음 문자열을 변경하고 싶습니다

allow ^120\.123\.178\.254$

입력하다

allow ^124\.130\.23\.235$

sed와 함께.

다음을 시도했지만 작동하지 않습니다.

sed -e 's/allow ^120\.123\.178\.254$/allow ^124\.130\.23\.235$/g' /etc/xxx/file.conf

도와주세요?

답변1

소스 코드에는 \, 및 문자 $가 포함되어 있으며 추가 인용이 필요합니다. 귀하의 목표 도 참조되어야 합니다^.\

따라서 결과 문자열은 약간 지저분합니다.

sed 's/allow \^120\\\.123\\\.178\\\.254\$/allow ^124\\.130\\.23\\.235$/'

g마지막 것은 문자열이 한 줄에 여러 번 나타날 수 있는 경우에만 필요합니다.

예를 들어:

$ cat x
allow ^120\.123\.178\.254$
$ sed 's/allow \^120\\\.123\\\.178\\\.254\$/allow ^124\\.130\\.23\\.235$/' x 
allow ^124\.130\.23\.235$

답변2

perl옵션 인 경우 검색 패턴과 바꾸기를 모두 참조할 수 있습니다.

$ cat file.conf
allow ^120\.123\.178\.254$

$ perl -pe 's/\Qallow ^120\.123\.178\.254$/q(allow ^124\.130\.23\.235$)/e' file.conf
allow ^124\.130\.23\.235$

관련 정보