Shell

如何通過與另一個數據文件進行比較來提取數據文件中的某些行?(合併)

  • October 1, 2015

我有 2 個不同的文件:

first file:
id1 19501112
id2 19831207
1d4 20001212
id6 20000101
id10 20061213
id11 20081212
id12 20100109
id13 20101218
id14 20101212
id15 20111111
id16 20150919
id20 20141415

第二個文件:

id100
id2
id4
id44
id10
id16
id2000
id34
id5
id7

所以我想提取文件 1 中的那些行,這些行的 id 與第二個文件中的 id 相同。所以我希望我的輸出文件看起來像:

id2 19831207
1d4 20001212
id10 20061213
id16 20150919

請問有什麼建議嗎?

使用 GNU grep:

grep -w -f file2.txt file1.txt 

這告訴grep只匹配整個“單詞”,並從 file2.txt 中獲取要搜尋的模式列表

如果 file2.txt 的內容有可能出現在 file1.txt 的其餘行中,那麼您可以像這樣使用 sed 和 bash 的程序替換:

grep -f <(sed -e 's/^/^/ ; s/$/\\b/' file2.txt) file1.txt

這使用 sed 將每一idN行轉換為^idN\b在使用它之前grep -f

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