Substituir valores comuns em dois arquivos de acordo com a primeira coluna

5

Como eu substituo valores comuns em dois arquivos de acordo com a primeira coluna?

Eu tenho o arquivo 1 (1.txt):

CH063_01084
CH063_01083
CH063_13925
CH063_14473

e arquivo 2 (2.txt):

CH063_01083         FGSG_16349  4
CH063_14473         FGSG_16350  5
O arquivo de saída

deve ser:

CH063_01084
CH063_01083          FGSG_16349 4
CH063_13925
CH063_14473          FGSG_16350 5
    
por user73347 23.06.2014 / 12:10

2 respostas

9

Você pode usar join para isso:

join -a 1 file1 file2

join combina arquivos baseados em um campo comum. Por padrão, esse é o primeiro campo dos dois arquivos. -a 1 significa incluir linhas do primeiro arquivo quando não houver par. Para escolher campos diferentes do primeiro, use -1 N -2 M para escolher o campo N de file1 e M de file2 .

    
por 23.06.2014 / 12:15
5

Você pode usar join :

$ join -a 1 file1.txt file2.txt 
A
B asas 4
C
D addd 5

Se o seu arquivo não estiver classificado:

join -a 1 <(sort 1.txt) <(sort 2.txt)

Mas isso faz você perder o seu formato. Você pode usar perl :

$ perl -anle ' $h{$F[0]} = $_;
    END { print for sort values %h }
' file1.txt file2.txt
    
por 23.06.2014 / 12:13