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_stringdispara a impressão damdsalva anteriormente, a própria linha e a próxima linha. -
if(md!="")emd=""estão lá para garantir que você não recebamodlinhas duplicadas quando houver muitossearch_string-s sob um únicomod(mod start3em seu exemplo).
Nota:
- Uma linha contendo
modesearch_stringquebrará essa lógica.