Um trabalho clássico para join
:
join -1 1 -2 2 file1 file2
-
-1 1
especifica o campo no primeiro arquivo. -
-2 2
especifica o campo no segundo arquivo.
Eu preciso combinar dois arquivos desiguais usando $ 1 do arquivo 1 e $ 2 do arquivo 2 e imprimir $ 1 do arquivo 2 no arquivo 1.
Arquivo de entrada 1
101 2
101 5
101 7
103 2
103 3
103 4
105 3
105 2
Arquivo de entrada 2
24 101
23 103
26 105
Saída desejada
101 2 24
101 5 24
101 7 24
103 2 23
103 3 23
103 4 23
105 3 26
105 2 26
Eu tentei o seguinte código, mas ele me deu uma saída incorreta.
awk 'FNR==NR{a[$2]=$0;next};{print a[$2]}' file2 file1
A partir do seu código, também postei uma solução awk
porque você estava quase lá:
awk 'FNR==NR { a[$2]=$1; next; } { print $0,a[$1] } ' file2 file1
Saída:
101 2 24
101 5 24
101 7 24
103 2 23
103 3 23
103 4 23
105 3 26
105 2 26