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 usarjoin
por esta:
join -a 1 file1 file2
join
combina arquivos com base em um campo comum. Por padrão, esse é o primeiro campo de ambos os arquivos. -a 1
significa incluir linhas do primeiro arquivo quando não havia par. Para escolher campos diferentes do primeiro, use -1 N -2 M
para escolher o campo N de file1
e 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