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.

Mah
fonte
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
Kamaraj
fonte
1
também,sed -n '/C02/{N; p}' ~/temp/log.txt
Sundeep