Eu tenho um arquivo que contém o mesmo padrão várias vezes. Estou tentando realizar sed
uma série de operações apenas para a segunda ocorrência desse padrão. O arquivo fica assim:
pattern
line 1
line 2
line 3
...
pattern
line 4
line 5
line 6
...
pattern
line 7
line 8
line 9
Minha saída desejada é line 4
. Atualmente tenho:
sed -n '/pattern/{n;p;q;}' file
impressão line 1
. Como posso modificar meu comando para obter line 4
? Estou usando a versão macOS do sed
.
Com
awk
, conte o número de vezes que combinamospattern
e usegetline
para ler a próxima linha quando atingirmos a contagem de dois. Depois de imprimir a linha, podemos desistir.Uma abordagem semelhante em Perl:
Supondo que sabemos que o padrão ocorre logo na primeira linha, uma
sed
solução seria remover todas as linhas da primeira até a próxima linha correspondente ao padrão e então imprimir a primeira das linhas restantes (e sair):Experimente este comando:
Para a quinta instância, use 5p em vez de 2p, etc.
Quase nenhuma necessidade de explicação.