Shell-Script

合併兩個文本並比較行,如果某些列相似,則選擇一個文本的行

  • June 4, 2019

我有兩個不同的文件,其中兩個數據的某些行測量相同的東西。我想要一個合併的輸出,這樣 File1 的行將是輸出行,其中行測量相同的事物(file1 的第二行和 file2 的第一行測量相同的事物。我希望在 column1 和 column2 時有 file1 的第一行的文件是相似的。)

…文件1:

1257, OBM  , 47, 106, 1330
1257, IRK  , 52, 104,  467

….

文件2:

1257, IRK  , 50, 100,  400
1000, CTK  , 47, 106, 1330

….

輸出:

1257, OBM  , 47, 106, 1330
1257, IRK  , 52, 104,  467
1000, CTK  , 47, 106, 1330

….

使用awk

awk -F',' '!seen[$1,$2]++' file1 file2

解釋:

  • 一開始,鍵為欄位的數組項$1,$2未分配,因此為假。
  • 如果它為假,!seen則為真,所以我們增加它(使其為真)並執行預設操作,即print.
  • 如果為真(我們第二次看到相同的欄位)!seen為假,awk將跳過該行。

引用自:https://unix.stackexchange.com/questions/515589