Как заменить общие значения в двух файлах по первому столбцу?
У меня есть файл 1 (1.txt):
CH063_01084
CH063_01083
CH063_13925
CH063_14473
и файл 2 (2.txt):
CH063_01083 FGSG_16349 4
CH063_14473 FGSG_16350 5
Выходной файл должен быть:
CH063_01084
CH063_01083 FGSG_16349 4
CH063_13925
CH063_14473 FGSG_16350 5
решение1
Вы можете использоватьjoin
для этого:
join -a 1 file1 file2
join
объединяет файлы на основе общего поля. По умолчанию это первое поле обоих файлов. -a 1
означает включить строки из первого файла, когда пары не было. Чтобы выбрать поля, отличные от первого, используйте -1 N -2 M
to pick field N from file1
и M from file2
.
решение2
Вы можете использовать join
:
$ join -a 1 file1.txt file2.txt
A
B asas 4
C
D addd 5
Если ваш файл не отсортирован:
join -a 1 <(sort 1.txt) <(sort 2.txt)
Но это заставляет вас потерять ваш формат. Вы можете использовать perl
:
$ perl -anle ' $h{$F[0]} = $_;
END { print for sort values %h }
' file1.txt file2.txt