![다른 특정 일치까지 각 grep 일치 후에 줄을 표시하는 방법은 무엇입니까?](https://linux55.com/image/2990/%EB%8B%A4%EB%A5%B8%20%ED%8A%B9%EC%A0%95%20%EC%9D%BC%EC%B9%98%EA%B9%8C%EC%A7%80%20%EA%B0%81%20grep%20%EC%9D%BC%EC%B9%98%20%ED%9B%84%EC%97%90%20%EC%A4%84%EC%9D%84%20%ED%91%9C%EC%8B%9C%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
"-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/'