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}"