pesquisa grep + próxima linha


17

Com o grepcomando, encontrei o texto necessário da seguinte maneira:

grep 'C02' ~/temp/log.txt Agora, onde quer que encontre a sequência desejada, gostaria de imprimir a linha após a sequência encontrada.

Por exemplo, digamos que o texto desejado seja 'abc' e abc seja encontrado na linha 12, eu também gostaria de imprimir a linha 13.


3
grep -A1 'abc' ~/temp/log.txtpara uma linha de contexto Um epois de jogo - ver a Context Line Controlsubsecção do manual ( man grep)
steeldriver

1
o gnu grep facilita; posix não especifica o sinalizador -A
Jeff Schaller

1
oi e bem-vindo ao Stack Exchange! no SE, espera-se que você faça alguma pesquisa básica antes de vir aqui para obter ajuda. por exemplo, uma pesquisa por "grep show next line" retornou uma resposta indireta no primeiro resultado e uma resposta direta no segundo. o que você fez para tentar resolver esse problema já?
strugee

Respostas:


24

Se você estiver usando o sistema Linux, poderá tentar:

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.

Você pode usar o awk também como:

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

1
também,sed -n '/C02/{N; p}' ~/temp/log.txt
Sundeep
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.