Shell
如何通過與另一個數據文件進行比較來提取數據文件中的某些行?(合併)
我有 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
。