타격 후 다음 N 줄을 grep하고 인쇄하는 방법은 무엇입니까?


16

텍스트 파일에서 발생을 grep하고 각 발생 후에 다음 N 줄을 인쇄하고 싶습니다. 어떤 아이디어?

답변:


23

Grep에는 다음과 같은 옵션이 있습니다. 자세한 내용 은 매뉴얼 페이지 를 참조하십시오.

  • -A num 각 일치 후 후행 컨텍스트의 num 행을 인쇄합니다. -B 및 -C 옵션도 참조하십시오.

  • -B num 각 일치 전에 선행 컨텍스트의 num 행을 인쇄합니다. -A 및 -C 옵션도 참조하십시오.

  • -C [num] 각 일치를 둘러싼 선행 및 후행 컨텍스트의 num 행을 인쇄합니다. 기본값은 2이며 -A 2 -B 2와 같습니다. 참고 : 옵션과 해당 인수 사이에는 공백이 없어야합니다.


7

당신이 GNU이있는 경우 grep, 그것은이다 -A/ --after-context옵션을 선택합니다. 그렇지 않으면으로 할 수 있습니다 awk.

awk '/regex/ {p = N}
     p > 0   {print $0; p--}' filename

1
awk '/regex/{p=2} p > 0 {print $0; p--}' filename-효과가 있습니다.
BladeMight


3

일치하는 줄 후에 N 줄 인쇄

옵션 grep과 함께 사용 하면 -A n줄을 일치시킨 후 N 줄을 인쇄 할 수 있습니다 .

예를 들면 다음과 같습니다.

$ cat mytext.txt 
  Line1
  Line2
  Line3
  Line4
  Line5
  Line6
  Line7
  Line8
  Line9
  Line10

$ grep -wns Line5 mytext.txt -A 2
5:Line5
6-Line6
7-Line7

다른 관련 옵션 :

일치하는 줄 전에 N 줄을 인쇄

-B n옵션을 사용하면 줄을 일치시키기 전에 N 줄을 인쇄 할 수 있습니다.

$ grep -wns Line5 mytext.txt -B 2
3-Line3
4-Line4
5:Line5

일치하는 줄 전후에 N 줄을 인쇄하십시오.

-C n옵션을 사용하면 일치하는 줄 전후에 N 줄을 인쇄 할 수 있습니다.

$ grep -wns Line5 mytext.txt -C 2
3-Line3
4-Line4
5:Line5
6-Line6
7-Line7
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.