
반전 일치를 사용하여 파일을 grep하려고 하지만 일치하는 줄 바로 뒤에 나오는 모든 줄을 일치시키지는 않습니다.
그래서 다음과 같은 파일에 다음 내용이 있습니다 testing_grep
.
aaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbb
bbbbbbbbbbbbbbbbbb
cccccccccccccccccc
dddddddddddddddddd
llllllllllllllllll
dddddddddddddddddd
llllllllllllllllll
fffffffffffffffff
fffffffffffffffff
d
그래서 나는 일치하는 항목을 포함하는 줄과 일치하는 다음 줄을 제외한 모든 줄을 일치시키고 싶으 므로 다음 grep
명령을 사용합니다.
grep -v "d" -A 1 testing_grep.txt
그러나 필요한 것은 다음 출력뿐입니다.
aaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbb
bbbbbbbbbbbbbbbbbb
cccccccccccccccccc
fffffffffffffffff
fffffffffffffffff
도움을 주셔서 감사합니다.
답변1
GNU sed로 이것을 시도해 보세요:
패턴 공간(현재 행)에서 g를 //
포함하는 행을 검색( ) 합니다 d
. 해당 라인에 대해서만 다음 입력 라인을 패턴 공간에 추가하고( N
) 패턴 공간을 삭제합니다( d
).
sed '/d/{N;d;}' testing_grep.txt
산출:
아아아아아아아아아아아아아아아 bbbbbbbbbbbbbbbbbb bbbbbbbbbbbbbbbbbb cccccccccccccccccc ffffffffffffffff ffffffffffffffff
답변2
Cyrus는 이미 완벽한 답변을 얻었지만, 원한다면 grep을 사용하여 답변을 작성하세요(더 복잡함).
원하지 않는 줄을 찾아서 파일에 넣습니다.
grep 'd' -A 1 testing_grep.txt > otherfile.txt
otherfile.txt 내용은 다음과 같습니다.
dddddddddddddddddd llllllllllllllllll dddddddddddddddddd llllllllllllllllll
그런 다음 diff 명령을 사용하여 차이점을 확인합니다.
diff testing_grep.txt otherfile.txt | grep '^[<>]'