Sed

比較兩個文件得到相同的列表

  • March 5, 2016

file1.txt(50 行)

TERYUFV00000010753
TERYUFV00000009526 

file2.txt(500 行)

TERYUFV00000009526 refids_739_known_8/10_target
TERYUFV00000018907 refids_12023_known_21/22_target
TERYUFV00000010753 refids_11775_known_1/1_target

輸出.txt

TERYUFV00000010753 refids_11775_known_1/1_target
TERYUFV00000009526 refids_739_known_8/10_target

比較 file1.txt(有 50 行)和 file2.txt(有 500 行),從 file2.txt 中獲取與 file1.txt 相同的列表。

我嘗試了 join 和 fgrep 命令,它輸出空文件

fgrep -f file1.txt file2.txt

這裡我們從 file1.txt 中獲取搜尋模式並在 file2.txt 中進行搜尋。由於文本是固定的,我們正在使用fgrep更快的搜尋操作。

在此處輸入圖像描述

當您使用 join 時,每行上的條目就像數據庫中的“單元格”,但它們應該被排序,所以您可以嘗試,

sort file1.txt > file1_t.txt
sort file2.txt > file2_t.txt

然後加入

$ join file1_t.txt file2_t.txt

這將為您提供一個外部連接,即兩個文件中所有出現的單元格的列表。要將此列表減少為僅兩個文件中的條目,請將上述命令的輸出通過管道傳輸到 uniq

$ join file1_t.txt file2_t.txt | uniq

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