2016-09-27 58 views
2

所以我有一個file1.txt與一個名稱列表和一個file2.txt與另一個名稱列表,我需要一個列表與兩個文件中的名稱。找到另一個文件中的行

我試過grep-f file1.txt file2.txt > newlist.txt但由於某種原因,它不起作用,newlist.txt的名稱不在file1中。

有誰知道爲什麼會發生這種情況,我能做些什麼才能得到兩個名單上的名字?

謝謝。

+0

這些文件的內容是什麼? –

+0

[Unix命令查找兩個文件中常見的行的可能的重複](https://stackoverflow.com/questions/373810/unix-command-to-find-lines-common-in-two-files) – tripleee

回答

1

如果每個列表中的每個名稱是唯一的,那麼你就可以找到他們的交集,如下所示:

sort file1.txt file2.txt | uniq -d > newlist.txt 
2

如果FILE1.TXT和FILE2.TXT進行排序,也可以使用「通訊」

comm -12 file1.txt file2.txt > newlist.txt 
+3

或'comm -12 <(排序file1.txt)<(排序file2.txt)''如果沒有排序... – Sundeep

0

你的grep -f file1.txt file2.txt > newlist.txt是一個不錯的想法,但是當file1.txt具有「s10」和file2.txt具有「slass100」時會產生太多的命中。你要匹配的完整產品線,所以儘量

grep -Fxf file1.txt file2.txt > newlist.txt 

這應該是比首先需要排序的解決方案更快。

相關問題