SED를 사용하여 줄의 특정 위치에 문자열 삽입

SED를 사용하여 줄의 특정 위치에 문자열 삽입

여러 클라이언트 영역 파일에서 spf 레코드를 업데이트해야 합니다.

기존 spf 레코드는 다음과 같습니다.

"v=spf1 +a +mx +ip4:xxx.xxx.xxx.xxx +include:spf.web-xxx.com ~all"

내가 해야 할 일은 v=spf1 +a +mx 뒤에 새 IP 주소를 삽입하는 것입니다.

원하는 출력은

"v=spf1 +a +mx +ip4:yyy.yyy.yyy.yyy +ip4:xxx.xxx.xxx.xxx +include:spf.web-xxx.com ~all"

나는이 명령을 시도하고 있습니다 :

sed  '/v=spf1 +a +mx /a +ip4:yyy.yyy.yyy.yyy' myfile

하지만 줄 끝에 새 IP가 추가됩니다.

그래서 나는 다음을 시도한다:

sed  '/v=spf1 +a +mx /i +ip4:67.215.1.206' myfile

그러나 나는 같은 결과를 얻습니다.

내가 뭘 잘못하고 있는지 잘 모르겠습니다.

도움을 주시면 감사하겠습니다.

캐리

답변1

GNU sed삽입 i및 추가 명령에 a추가됨새 줄. 문자열을 교체하려고 합니다.같은 줄이므로 대체 명령이 필요합니다 s.

매뉴얼에서:

문자 메시지를 보내요

줄 앞에 텍스트를 삽입합니다(대체 구문).

텍스트 단락

줄 뒤에 텍스트를 추가합니다. 이는 표준 a 명령에 대한 GNU 확장입니다. 자세한 내용은 아래를 참조하세요.

예를 들어

$ echo foo | sed ibar
bar
foo
$ echo foo | sed abar
foo
bar

행의 형식이 항상 동일하다고 가정하면 다음과 같이 시도해 보십시오.

$ sed 's/+/+ip4:127.0.0.1 +/4' file
"v=spf1 +a +mx +ip4:xxx.xxx.xxx.xxx +ip4:127.0.0.1 +include:spf.web-xxx.com ~all"

네 번째 더하기 기호를 찾습니다.+

"v=spf1 +a +mx +ip4:xxx.xxx.xxx.xxx+…”

더하기 기호와 IP로 바꾸십시오 +.

관련 정보