Grep: 위의 두 번째 줄만 표시

Grep: 위의 두 번째 줄만 표시

내용이 포함된 텍스트 파일이 있다고 가정해 보겠습니다.

foo
bar
whatever

something I don't know
bar2
whatever

grep whatever myfile.txt그리고 (and/or sedand/or ) 작업의 결과로 awk다음을 원합니다.

foo
something I don't know

옵션 을 사용해 보았지만 -B 2foo. 기록이 너무 많아서 할 수 없습니다 .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

관련 정보