$ awk 'FNR == NR { a[$2] = $1; next }
{ print
line = (a[$1] ? a[$1] : "Ø")
for (i = 2; i <= NF; ++i) {
line = line OFS (a[$i] ? a[$i] : "Ø")
}
printf("%s\n", line)
}' input2 input1
A B C D
v c c c
A B C
v c c
A B C D E F
v c c c v Ø
Ou seja, se estivermos lendo o primeiro arquivo ( input2
), preencha uma tabela de consulta com os símbolos com os quais cada caractere deve ser substituído.
Ao ler o segundo arquivo ( input1
), imprima a linha de entrada, faça um loop pelos campos e construa uma cadeia com os símbolos corretos da tabela de consulta. Se um símbolo estiver faltando na tabela de consulta, insira Ø
.
Em seguida, imprima a string montada com uma nova linha final.
Você também pode transformá-lo em um script adequado:
#!/usr/bin/awk -f
FNR == NR { a[$2] = $1; next }
{ print
line = (a[$1] ? a[$1] : "Ø")
for (i = 2; i <= NF; ++i) {
line = line OFS (a[$i] ? a[$i] : "Ø")
}
printf("%s\n", line)
}
Em seguida, torne-o executável ( chmod +x script
) e execute-o da seguinte maneira:
$ ./script input2 input1
A B C D
v c c c
A B C
v c c
A B C D E F
v c c c v Ø