다른 특정 경기까지 각 그렙 경기 후 줄을 표시하는 방법은 무엇입니까? 있다는 것을 알고 있습니다. 각 일치 후에

"-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



답변

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

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


답변

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

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


답변

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

또는

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


답변