다른 특정 일치까지 각 grep 일치 후에 줄을 표시하는 방법은 무엇입니까?

다른 특정 일치까지 각 grep 일치 후에 줄을 표시하는 방법은 무엇입니까?

"-A NUM"스위치를 사용하면 각 일치 후 특정 수의 후행 줄을 인쇄할 수 있다는 것을 알고 있습니다 . 각 일치 항목 후에 특정 단어가 발견될 때까지 후행 줄을 인쇄할 수 있는지 궁금합니다. 예를 들어, "Word A"를 검색할 때 "Word A"가 포함된 행과 "Word D"가 포함된 행까지의 행을 보고 싶습니다.

문맥:

Word A
Word B
Word C
Word D
Word E
Word F

주문하다:

grep -A10 'Word A'

다음 출력이 필요합니다.

Word A
Word B
Word C
Word D

답변1

Word A' '와 ' '(포함) Word D사이의 줄을 인쇄하려는 것 같습니다 . sed대신 을 사용하는 것이 좋습니다 grep. 원하는 패턴으로 시작하고 끝나는 일련의 입력 스트림을 편집할 수 있습니다. sed범위의 모든 줄을 인쇄하고 다른 줄은 인쇄하지 않도록 지시해야 합니다 .

sed -n -e '/Word A/,/Word D/ p' file

답변2

왜 awk를 사용하지 않습니까?

awk '/Word A/,/Word D/' filename

답변3

perl -lne 'print if /Word A/ .. /Word D/' file

또는

cat file | perl -lne 'print if /Word A/ .. /Word D/'

관련 정보