No awk, você faria da seguinte maneira
awk '/pattern/{nr[NR]; nr[NR+4]}; NR in nr' file > new_file'
ou
awk '/pattern/{print; nr[NR+4]; next}; NR in nr' file > new_file'
Explicação
A primeira solução encontra todas as linhas que correspondem a pattern . Quando encontra uma correspondência, armazena o número do registro ( NR ) na matriz nr . Também armazena o 4º registro de NR no mesmo array. Isso é feito pelo nr[NR+4] . Cada registro ( NR ) é então verificado para ver se está presente na matriz nr , em caso afirmativo, o registro é impresso.
A segunda solução funciona essencialmente da mesma maneira, exceto quando encontra o pattern que imprime a linha e, em seguida, armazena o 4º registro à frente no array nr , e então vai para o próximo registro. Então, quando awk encontrar este 4º registro, o NR in nr bloco será executado e imprimirá este registro +4 depois.
Exemplo
Veja um exemplo de arquivo de dados, sample.txt .
$ cat sample.txt
1
2
3
4 blah
5
6
7
8
9
10 blah
11
12
13
14
15
16
Usando a primeira solução:
$ awk '/blah/{nr[NR]; nr[NR+4]}; NR in nr' sample.txt
4 blah
8
10 blah
14
Usando a segunda solução:
$ awk '/blah/{print; nr[NR+4]; next}; NR in nr' sample.txt
4 blah
8
10 blah
14