sed를 사용하여 "test message1" 뒤에 새 줄을 추가하는 방법은 무엇입니까? [복사]

sed를 사용하여 "test message1" 뒤에 새 줄을 추가하는 방법은 무엇입니까? [복사]

실제로 .라는 파일이 있습니다 test1.txt.

해당 파일에는 다음과 같은 다섯 줄이 있습니다.

 'test message1'
 'test message2'
 'test message3'
 'test message4'
 'test message5'

이제 이 줄 다음에 파일 'testing testing'에 새 줄을 추가하고 싶습니다 . 어떻게 하나요?test1.txt'test message1'

답변1

이것은a이 명령은 다음을 수행합니다.

sed -e "/test message1/a\\
'testing testing'" < data

이 명령은 다음을 수행합니다.

현재 주기가 끝날 때나 다음 입력 줄을 읽을 때 출력을 위해 이 명령 뒤에 오는 텍스트 줄(출력에서 제거되는 \로 끝나는 마지막 줄 제외)을 대기열에 넣습니다.

따라서 이 경우 pend 와 행을 일치시키면 /test message1/파일의 새 행이 되는 텍스트 인수 " "를 사용하여 명령을 실행합니다.a'testing testing'

 'test message1'
 'testing testing'
 'test message2'
 'test message3'
 'test message4'
 'test message5'

최종이 아닌 각 줄을 백슬래시로 끝내면 여러 줄을 삽입할 수 있습니다. 위의 이중 백슬래시는 쉘이 이를 먹는 것을 방지하기 위한 것입니다. 독립 실행형 스크립트에서 사용하는 경우 sed단일 백슬래시를 사용하십시오. GNU는 또한 sed그 뒤에 한 줄의 텍스트를 허용 a하지만 이는 이식 가능하지 않습니다.

답변2

그리고 sed:

sed "s/'test message1'/'test message1'\n'testing testing'/g"
  • "테스트 메시지 1"을 검색하세요.
  • "테스트 메시지 1" [새 줄] "테스트 테스트"로 바꿉니다.

~에서이 답변, 다음을 사용할 수도 있습니다.

sed "/'test message1'/a 'testing testing'"
  • "테스트 메시지 1"을 검색하세요.
  • 게임 뒤에 "테스트 테스트"를 추가하세요.

답변3

POSIX적으로:

$ sed -e "/'test message1'/s//&\\
'testing testing'/" file
'test message1'
'testing testing'
'test message2'
'test message3'
'test message4'
'test message5'

관련 정보