
내용이 포함된 텍스트 파일이 있다고 가정해 보겠습니다.
foo
bar
whatever
something I don't know
bar2
whatever
grep whatever myfile.txt
그리고 (and/or sed
and/or ) 작업의 결과로 awk
다음을 원합니다.
foo
something I don't know
옵션 을 사용해 보았지만 -B 2
및 foo
. 기록이 너무 많아서 할 수 없습니다 .bar
... | grep -v bar
답변1
grep은 아니지만 작동해야 합니다.
awk '/grep_string/ {print a} {a=b;b=$0}' 파일
답변2
그래서 내가 할 수 있는 방법을 찾을 수 없었기 때문에 내 해결책은 다음과 같습니다.
콘텐츠 블록이 반환되었으므로 다음과 같이 말하세요.
foo
bar
whatever
--
foo2
bar2
whatever
--
등등, 나는 grep의 구분 기호를 사용하여 바로 다음 줄을 가져온 다음 제거했습니다.
grep -B2 whatever myfile.txt | grep -v whatever | grep -A 1 -E '\-\-' | grep -v -E '\-\-'
그러면 다음과 같이 출력됩니다.
foo
foo2