여러 줄 패턴 삭제

여러 줄 패턴 삭제

원본 테스트 파일:

[root@scspr2056449018 ~]# cat test.txt
abc
def
hij
klmn

패턴이 포함된 줄을 제거하려고 시도했지만 abc\ndef작동하지 않습니다.

[root@scspr2056449018 ~]# sed -i 's/abc\ndef//' test.txt
[root@scspr2056449018 ~]# cat test.txt
abc
def
hij
klmn
[root@scspr2056449018 ~]# sed -i '/abc\ndef/d' test.txt
[root@scspr2056449018 ~]# cat test.txt
abc
def
hij
klmn

내 사용법에 문제가 있습니까 sed? 아니면 sed줄 편집기이고 여러 줄 패턴을 일치시킬 수 없기 때문에 잘못된 명령을 사용하고 있습니까 ?

답변1

sed에서 보류 버퍼를 사용하여 이를 수행할 수 있지만 sedGNU sed를 사용하여 이 문제를 해결하는 것이 더 쉽습니다. 즉, -z개행 문자 대신 NUL 바이트를 구분 기호로 사용하도록 지시하는 것입니다.

$ sed -z 's/abc\ndef//' test.txt

hij
klmn

아니면 Perl로 전환하세요( -0NUL을 줄 구분 기호로 사용하여 -0777한 번에 전체 파일을 읽도록 지시합니다).

$ perl -0777 -pe 's/abc\ndef//' test.txt

hij
klmn

관련 정보