2016-09-27 53 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 

这应该是比首先需要排序的解决方案更快。

相关问题