A abordagem grep
/ head
funciona perfeitamente bem. Dúvida, há um jeito mais simples. Se houver várias correspondências, apenas mostrará a primeira correspondência.
$ grep -B 10 l x|head -1
b
$
GNU awk
solution, usando um buffer circular. Se houver várias correspondências, mostra cada correspondência.
$ awk '/^l$/{print a[NR%10]};{a[NR%10]=$0}' x
b
$