Para inserir o conteúdo do arquivo t4 duas linhas depois da n -th ocorrência de ^group-sorted NTTA$ no arquivo H0, tente:
awk -v n=2 'FNR==NR{t=t"\n"$0;next} /^group-sorted NTTA$/ && n==++cnt {x=NR+3} NR==x{print substr(t,2)} 1' t4 H0
Embora haja, sem dúvida, uma solução sed para esse problema, awk é uma opção mais natural aqui porque awk entende aritmética. Isso, por exemplo, torna mais fácil programar awk para fazer algo depois da n -th ocorrência de algo em que n é uma variável.
Como funciona
-
-v n=2Isso define o valor de
n. -
FNR==NR{t=t"\n"$0;next}Ao ler o arquivo com o primeiro nome,
t4, isso salva seu conteúdo na variávelt. -
/^group-sorted NTTA$/ && n==++cnt {x=NR+3}Ao ler o arquivo de segundo nome,
H0, o número de ocorrências de^group-sorted NTTA$é salvo na variávelcnt. Secntfor igual an, então, atribuiremos a variávelxao valor do número da linha atual,NR, mais 3. -
NR==x{print substr(t,2)}Quando alcançamos o número de linha
x, imprimimos o conteúdo da variávelt. (O comandosubstrremove um caractere de nova linha inicial supérfluo). -
1Esta é a abreviação do awk para imprimir a linha de corrente.
Exemplo
Considere estes arquivos de entrada:
$ cat H0
blah, blah
group-sorted ZBTS
10.48.37.11 zinpl001z3a01 #"TRENDe
10.48.37.12 zinpl001z3a02 #"TRENDe
group-sorted NTTA
10.59.31.11 etrpl001z1a01 # "TRENDe
10.59.31.12 etrpl001z1a02 # "TRENDe
10.59.31.13 etrpl001z1a03 # "TRENDe
group-sorted NTTA
10.59.31.14 etrpl001z1a04 # "TRENDe
10.59.31.31 etrvl201a1001 # "TRENDe
10.59.31.32 etrvl201a1002 # "TRENDe
group-sorted NTTA
10.59.31.33 etrvl201a1003 # "TRENDe
10.59.31.150 etrvl201a1004 # "TRENDe
10.59.31.151 etrvl201a1005 # "TRENDe
E:
$ cat t4
line 1 of t4
line 2 of t4
A saída do nosso comando é:
$ awk -v n=2 'FNR==NR{t=t"\n"$0;next} /^group-sorted NTTA$/ && n==++cnt {x=NR+3} NR==x{print substr(t,2)} 1' t4 H0
blah, blah
group-sorted ZBTS
10.48.37.11 zinpl001z3a01 #"TRENDe
10.48.37.12 zinpl001z3a02 #"TRENDe
group-sorted NTTA
10.59.31.11 etrpl001z1a01 # "TRENDe
10.59.31.12 etrpl001z1a02 # "TRENDe
10.59.31.13 etrpl001z1a03 # "TRENDe
group-sorted NTTA
10.59.31.14 etrpl001z1a04 # "TRENDe
line 1 of t4
line 2 of t4
10.59.31.31 etrvl201a1001 # "TRENDe
10.59.31.32 etrvl201a1002 # "TRENDe
group-sorted NTTA
10.59.31.33 etrvl201a1003 # "TRENDe
10.59.31.150 etrvl201a1004 # "TRENDe
10.59.31.151 etrvl201a1005 # "TRENDe