根據第一列替換兩個檔案中的公共值

根據第一列替換兩個檔案中的公共值

如何根據第一列替換兩個文件中的公共值?

我有文件 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選擇字段 N fromfile1和 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

相關內容