grep: gera linha específica após a partida

grep: gera linha específica após a partida

Existe uma maneira, usando grep, de gerar a linha que cai em um número específico de linhas após a correspondência ser encontrada? Por exemplo, quero gerar a linha com uma correspondência, a 8ª linha após a correspondência e a 17ª linha após a correspondência. Isso é possível?

Eu sei que posso gerar as próximas 17 linhas usando grep -A17, mas quero saber se consigo obter a linha útil sem tudo o que está entre elas.

Responder1

Tente canalizar paraestranho blah | grep stuff -A17 | awk "NR==1{print} NR==8{print} NR==17{print;exit}" Isso produzirá apenas a 1ª, 8ª e 17ª linhas.

Se você quiser incluir padrões repetidos, você pode usar o operador mod (%)

awk "(NR-1)%17 == 0{print} (NR-8)%17 == 0{print} (NR-17)%17 == 0{print}"

informação relacionada