Como juntar 2 arquivos baseados em linhas comuns das primeiras colunas?

1
file1 :

HOUSAM1189870            3      0.00   0  -2450.00  11
HOUSAM1213135            3      0.00   0  -2620.00   2
HOCANM245675             3      0.00   0      0.00   0
HOUSAM1239242            3      0.00   0  -3113.00   8

file2 :

AY840F3001138842 20050301
AY840F3001140253 20060101
HOCANM245675     34409887        
HOUSAM1239242    34444444

Eu quero juntar o arquivo1 e o arquivo2 com base nas linhas comuns da primeira coluna. portanto, a saída deve ser:

file3:

HOCANM245675             3      0.00   0      0.00   0 34409887
HOUSAM1239242            3      0.00   0  -3113.00   8 34444444

alguma sugestão, por favor?

    
por zara 16.11.2016 / 20:48

1 resposta

0

(nota: esta resposta foi escrita antes da questão ser atualizada com o comando join e as mensagens de erro)

o comando é chamado join .

da página do manual:

join - join lines of two files on a common field

já que seus arquivos de entrada não estão classificados, você precisa classificá-los primeiro

join <(sort file1) <(sort file2)

as coisas <(...) são chamadas de substituição de processos e são suportadas pelo bash e alguns outros shells. se você tem um shell que não suporta substituição de processos, então você tem que trabalhar com arquivos intermediários.

join faz parte do gutu coreutils, então ele deve ser instalado nos sistemas mais comuns do gnu / linux.

    
por 16.11.2016 / 20:53