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
주소가 삽입됩니다 . 새 줄이 필요한 경우 \a
which 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]