Como mesclar dois arquivos de linhas diferentes e colunas e saída de linhas correspondentes com colums?

3

Eu tenho file1 (amostra):

60108903374
60172485121
60108919381
60174213128
60108919951
60108919970
601112020106
601112020107
601112020108
601112020113
601112020114
60175472940

E arquivo2 :

60179970001,A
60172681920,A
60174202041,A
60172514180,A
60174314679,A
60174325306,A
60175472940,A
60174213128,A
60175328984,A
60175349857,A
60172796759,A
60172798922,A
60179195129,A
60172485121,B
60173483126,A
60172683175,A
60174521828,A
60142536314,B
60175347909,B
60175183031,B

Eu quero mesclar file1 e file2 com correspondência de saída com base na primeira coluna, além de mostrar a segunda coluna de file2 .

Saída desejada :

60172485121,B
60174213128,A

file1 tem ~ 80k linhas e file2 tem 500k linhas.

Tentei usar:

join -1 1 -2 1 -o 1.1,2.2 file1 file2
    
por Johan Hakim Fahmi 06.09.2016 / 15:46

2 respostas

2
join -t, <(sort file1) <(sort -t, file2)

O acima faz o trabalho.

    
por 06.09.2016 / 16:50
0
awk -F, 'NF==1 {a[$1]++}; 
         NF>=2 && a[$1]' file1 file2
  • se tivermos apenas um campo, salve-o
  • se tivermos mais e o primeiro campo for salvo, imprima-o

saída obtida:

60175472940,A
60174213128,A
60172485121,B
    
por 06.09.2016 / 17:55