Como posso combinar um campo em dois arquivos diferentes e acrescentar juntos no arquivo de saída?

3

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
    
por Alula 13.01.2017 / 11:36

2 respostas

3

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.
por 13.01.2017 / 11:41
0

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
    
por 13.01.2017 / 12:57

Tags