Um buffer de linhas precisa ser usado.
Faça uma tentativa para isso:
awk -v N=4 -v pattern="example.*pattern" '{i=(1+(i%N));if (buffer[i]&& $0 ~ pattern) print buffer[i]; buffer[i]=$0;}' file
Defina o valor N
para a enésima linha antes do padrão a ser impresso.
Defina o valor pattern
como regex para pesquisar.
buffer
é uma matriz de N
elements. É usado para armazenar as linhas. Cada vez que o padrão é encontrado, a linha N
th antes de o padrão ser impresso.