원본 테스트 파일:
[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에서 보류 버퍼를 사용하여 이를 수행할 수 있지만 sed
GNU sed를 사용하여 이 문제를 해결하는 것이 더 쉽습니다. 즉, -z
개행 문자 대신 NUL 바이트를 구분 기호로 사용하도록 지시하는 것입니다.
$ sed -z 's/abc\ndef//' test.txt
hij
klmn
아니면 Perl로 전환하세요( -0
NUL을 줄 구분 기호로 사용하여 -0777
한 번에 전체 파일을 읽도록 지시합니다).
$ perl -0777 -pe 's/abc\ndef//' test.txt
hij
klmn