コマンド`grep -C N regex'を真似する
awk 'BEGIN{ L=N; b=L+1; n=L+2; i=j=0; s=2 };
    /regex/{ if (L&&s==1) print "--"; while (i!=j) { print a[i++]; if (i==b) i=0 } n=s=0 };
    n>L{ a[j++]=$0; if (j==b) j=0; if (i==j) { i++; if (i==b) i=0; if (!s) s++ } next }; n++<=L'

書けた!!データ飛ばすは、アク禁に巻き込まれるは散々だった。よく見たら凄い遅レスだ…
データのサルベージに使ったgrep -Cを書いてみた。流石にワンライナーとは言い難い。
効率はもう少し良くできそうだけど、これ以上短くするのは無理だった。実力が足りない;_;

あまりに読み辛いので、pastebinに整形版を置いておきます。
ttp://pastebin.com/PJ2VfqN4