awk '/match/{system("sed -n \"" NR-5 "p;" NR "p;" NR+5 "p\" " FILENAME)}' infile
Aqui estamos usando a função system(command)
do awk para chamar o comando sed
para imprimir as linhas que awk combinaram com padrão match
com 5 linhas th antes e depois da partida.
A sintaxe é fácil, você só precisa colocar o comando externo em si dentro de aspas duplas, assim como seus switches e escapar das coisas que você quer passar exatamente para o comando, tudo o mais relacionado às opções awk
em si deve ser fora das cotações. Então o abaixo sed :
"sed -n \"" NR-5 "p;" NR "p;" NR+5 "p\" " FILENAME
traduza para:
sed -n "NR-5p; NRp; NR+5p" FILENAME
NR
é o número da linha que corresponde ao padrão match
e FILENAME
é o processamento atual filename passando por awk
.