Ersetzen Sie gemeinsame Werte in zwei Dateien entsprechend der ersten Spalte

Ersetzen Sie gemeinsame Werte in zwei Dateien entsprechend der ersten Spalte

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önnenjoindafür:

join -a 1 file1 file2

joinkombiniert Dateien basierend auf einem gemeinsamen Feld. Standardmäßig ist dies das erste Feld beider Dateien. -a 1bedeutet, 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 Mauszuwählen .file1file2

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

verwandte Informationen