10-я предыдущая строка из матча

Как я могу получить 10-ю предыдущую строку из матча? Я думаю, что использование grep с опцией B, а затем прокладка его в голову будет работать, но есть ли более простой способ сделать это?

Например, если бы у меня был текстовый файл, подобный этому

a b c d e f g h i j k l m 

и если бы я выбрал шаблон «l», я получу 10-ю предыдущую строку, которая является «b».

Подход grep / head работает отлично. Сомневаюсь, что есть более простой способ. Если несколько совпадений, отображается только первое совпадение.

 $ grep -B 10 lx|head -1 b $ 

GNU awk , используя круговой буфер. Если несколько совпадений, показывает каждое совпадение.

 $ awk '/^l$/{print a[NR%10]};{a[NR%10]=$0}' x b $