awk '
$0 ~ /mod/ { md=$0 }
$0 ~ /search_string/ { if(md!="") { print md }; md="" ; print; getline; print }
'
Explicação:
- Uma linha contendo
mod
é salva comomd
. - Uma linha contendo
search_string
dispara a impressão damd
salva anteriormente, a própria linha e a próxima linha. -
if(md!="")
emd=""
estão lá para garantir que você não recebamod
linhas duplicadas quando houver muitossearch_string
-s sob um únicomod
(mod start3
em seu exemplo).
Nota:
- Uma linha contendo
mod
esearch_string
quebrará essa lógica.