Então, eu tenho dois arquivos simples no formato a seguir
Arquivo1.txt
Customer1 12345 12346 12347 15646
Customer2 14444 14445
Arquivo2.txt
12345 aol.com
12347 gmail.com
12346 google.com
14444 yahoo.com
14445 outlook.com
15646 space.com
Minha saída do Desire seria:
Customer1 aol.com gmail.com google.com space.com
Customer2 yahoo.com outlook.com
Eu criei o seguinte até agora, mas parece usar apenas a coluna 2 do arquivo 1. Posso expandir esse comando para incluir todas as colunas do arquivo 1?
awk 'NR==FNR {a[$1]=$2; next} $2 in a {print $0, a[$2]}' OFS='\' file2.txt file1.txt
Responder1
Você precisará percorrer os campos $2
em File1.txt
:
$ awk 'NR==FNR {a[$1]=$2; next} {for (i=2;i<=NF;i++) $i = $i in a ? a[$i] : $i} 1' File2.txt File1.txt
Customer1 aol.com google.com gmail.com space.com
Customer2 yahoo.com outlook.com
Isso $i = $i in a ? a[$i] : $i
pode ser simplificado para $i = a[$i]
se você tiver certeza de que haverá uma correspondência ou se desejar substituir as não correspondências por campos vazios.