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

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

Como 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

Responder1

Você pode usarjoinpor esta:

join -a 1 file1 file2

joincombina arquivos com base em um campo comum. Por padrão, esse é o primeiro campo de ambos os arquivos. -a 1significa incluir linhas do primeiro arquivo quando não havia par. Para escolher campos diferentes do primeiro, use -1 N -2 Mpara escolher o campo N de file1e M de file2.

Responder2

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 faz você perder o formato. Você pode usar perl:

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

informação relacionada