$ awk 'FNR==NR{n+=NF;a[n]=" ";next} FNR>1{for(i=1;i<=NF;i++)printf "%s%s",$i,a[i]; print""}' file1 file2
112 1 2 01
000 0 0 22
122 2 2 22
Como funciona
Primeiro, lemos file1
e usamos o número de campos em cada linha para determinar onde os espaços devem ser inseridos na saída. Então, lemos o arquivo2 e inserimos os espaços.
-
FNR==NR{n+=NF;a[n]=" ";next}
Este comando é executado ao ler o primeiro arquivo.
NF
é o número de campos na linha atual.n
é o número cumulativo de campos visualizados. Inserimos um espaço na matriza
para cadan
. (Outros valores serão padronizados para uma string vazia). -
FNR>1{for(i=1;i<=NF;i++)printf "%s%s",$i,a[i]; print""}
Para as linhas após a primeira, imprimimos cada campo numerado
i
seguido pora[i]
. Quando imprimimos todos os campos nessa linha, usamosprint
para imprimir um caractere de nova linha.