sed의 두 번째 패턴 뒤에 삽입

sed의 두 번째 패턴 뒤에 삽입

sed를 사용하여 텍스트 파일을 편집하고 있습니다. 주문하다:

sed -n -e '/pattern1/,/pattern2/p' test01.txt

모드 1과 모드 2 사이의 경계를 표시합니다. 하지만 이 뒤에 새 행을 삽입하려면 어떻게 해야 합니까 pattern2? 내 sed 버전은 "i\"를 라인 명령 버전으로 인식하지 않습니다. 저는 FreeBSD 포트를 실행하고 있습니다.

답변1

패턴2 뒤에 새 행만 삽입하려는 경우에는 이것이 작동합니다.

sed '/pattern2/s/$/\n/' file

[jaypal:~/Temp] cat file
some text
some text
some text pattern1
some text p
some text p 
some text p
some text pattern2
some text
some text

[jaypal:~/Temp] sed '/pattern2/s/$/\n/' file
some text
some text
some text pattern1
some text p
some text p 
some text p
some text pattern2

some text
some text

i\삽입용. before주소가 삽입됩니다 . 새 줄이 필요한 경우 \awhich is 를 사용할 수 있습니다 append.

[jaypal:~/Temp] sed '/pattern2/ a\
' file
some text
some text
some text pattern1
some text p
some text p 
some text p
some text pattern2

some text
some text

/pattern2/ 뒤에 새 줄을 추가하고 그 사이의 줄을 보려면 다음을 수행할 수 있습니다.

[jaypal:~/Temp] sed -e '/pattern2/G' -ne '/pattern1/,/pattern2/p' file
some text pattern1
some text p
some text p 
some text p
some text pattern2

[jaypal:~/Temp] 

유사한 awk솔루션 -

[jaypal:~/Temp] cat file
some text
some text
some text pattern1
some text p
some text p 
some text p
some text pattern2
some text
some text

[jaypal:~/Temp] awk '/pattern1/,/pattern2/ END{print ""}' file
some text pattern1
some text p
some text p 
some text p
some text pattern2

[jaypal:~/Temp] 

관련 정보