ОК, я думаю, что это сделает то, что вы ищете. Он будет искать шаблон и извлекать 5-ю строку перед каждым совпадением.
grep -B5 "pattern" filename | awk -F '\n' 'ln ~ /^$/ { ln = "matched"; print $1 } $1 ~ /^--$/ { ln = "" }'
В основном, как это работает, он берет первую строку, печатает ее, а затем ждет, пока не увидит ^--$
(разделитель совпадений, используемый grep), и начнет снова.