从另一个文件中查找行

时间:2016-09-27 16:06:29

标签: unix grep string-matching lines

所以我有一个带有名单列表的file1.txt和一个带有另一个名称列表的file2.txt,我需要一个列表,其中包含两个文件中的名称。

我尝试grep-f file1.txt file2.txt > newlist.txt但由于某种原因它不起作用,而newlist.txt的名称不在file1中。

有谁知道为什么会这样,以及如何只获取两个名单上的名字?

谢谢。

3 个答案:

答案 0 :(得分:2)

如果对file1.txt和file2.txt进行排序,您可以使用' comm'

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

答案 1 :(得分:1)

如果每个列表中的每个名称都是唯一的,那么您可以按如下方式找到它们的交集:

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

答案 2 :(得分:0)

你的grep -f file1.txt file2.txt > newlist.txt是一个很好的想法,但是当file1.txt有“s10”而file2.txt有“slass100”时会给出太多的点击。您想匹配整行,请尝试

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

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