grep 검색 + 다음 줄


18

grep명령으로 다음과 같이 필요한 텍스트를 찾았습니다.

grep 'C02' ~/temp/log.txt 원하는 문자열을 찾을 때마다 찾은 문자열 다음에 줄을 인쇄하고 싶습니다.

예를 들어 원하는 텍스트가 'abc'이고 abc가 12 행에 있고 13 행도 인쇄하고 싶다고 가정하겠습니다.


3
grep -A1 'abc' ~/temp/log.txt위한 1 개 컨텍스트의 라인 일치 따고 - 투시 매뉴얼 (하위 절 )Context Line Controlman grep
steeldriver

1
gnu grep을 사용하면 쉽게 만들 수 있습니다. posix는 -A 플래그를 지정하지 않습니다
Jeff Schaller

1
안녕하세요, Stack Exchange에 오신 것을 환영합니다! SE에서는 도움을 얻기 위해 여기에 오기 전에 몇 가지 기본 조사를 수행해야합니다. 예를 들어 "grep show next line"을 검색하면 첫 번째 결과에는 간접 답변이, 두 번째 결과에는 직접 답변이 반환됩니다. 이 문제를 이미 해결하기 위해 무엇을 했습니까?
strugee

답변:


25

Linux 시스템을 사용하는 경우 다음을 시도해보십시오.

grep -A1 "C02" ~/temp/log.txt


OPTIONS
       -A NUM, --after-context=NUM
              Print NUM lines of trailing context after matching lines.  Places a line containing -- between contiguous groups of matches.
       -B NUM, --before-context=NUM
              Print NUM lines of leading context before matching lines.  Places a line containing -- between contiguous groups of matches.
       -C NUM, --context=NUM
              Print NUM lines of output context.  Places a line containing -- between contiguous groups of matches.

다음과 같이 awk를 사용할 수도 있습니다.

awk '/C02/{print;getline;print}' ~/temp/log.txt

1
또한,sed -n '/C02/{N; p}' ~/temp/log.txt
Sundeep
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.