Wie ersetze ich gemeinsame Werte in zwei Dateien entsprechend der ersten Spalte?
Ich habe Datei 1 (1.txt):
CH063_01084
CH063_01083
CH063_13925
CH063_14473
und Datei 2 (2.txt):
CH063_01083 FGSG_16349 4
CH063_14473 FGSG_16350 5
Die Ausgabedatei sollte sein:
CH063_01084
CH063_01083 FGSG_16349 4
CH063_13925
CH063_14473 FGSG_16350 5
Antwort1
Sie könnenjoin
dafür:
join -a 1 file1 file2
join
kombiniert Dateien basierend auf einem gemeinsamen Feld. Standardmäßig ist dies das erste Feld beider Dateien. -a 1
bedeutet, dass Zeilen aus der ersten Datei eingeschlossen werden, wenn kein Paar vorhanden war. Um andere Felder als das erste auszuwählen, verwenden Sie , um die Felder N aus und M aus -1 N -2 M
auszuwählen .file1
file2
Antwort2
Sie können Folgendes verwenden join
:
$ join -a 1 file1.txt file2.txt
A
B asas 4
C
D addd 5
Wenn Ihre Datei nicht sortiert ist:
join -a 1 <(sort 1.txt) <(sort 2.txt)
Allerdings geht dabei das Format verloren. Sie können Folgendes verwenden perl
:
$ perl -anle ' $h{$F[0]} = $_;
END { print for sort values %h }
' file1.txt file2.txt