【问题标题】:find lines from one file in another从另一个文件中的一个文件中查找行
【发布时间】:2016-09-27 16:06:29
【问题描述】:
所以我有一个包含名称列表的 file1.txt 和一个包含另一个名称列表的 file2.txt,我需要一个包含两个文件中名称的列表。
我尝试了grep-f file1.txt file2.txt > newlist.txt,但由于某种原因它不起作用,并且 newlist.txt 的名称不在 file1 中。
有谁知道为什么会发生这种情况以及我可以做些什么来只获取两个列表上的名字?
谢谢。
【问题讨论】:
标签:
unix
grep
string-matching
lines
【解决方案1】:
如果对file1.txt和file2.txt进行了排序,可以使用'comm'
comm -12 file1.txt file2.txt > newlist.txt
【解决方案2】:
您的grep -f file1.txt file2.txt > newlist.txt 是一个不错的想法,但是当 file1.txt 具有“s10”而 file2.txt 具有“slass100”时会产生过多的命中。你想匹配整行,所以试试
grep -Fxf file1.txt file2.txt > newlist.txt
这应该比需要先排序的解决方案更快。
【解决方案3】:
如果每个列表中的每个名字都是唯一的,那么你可以找到它们的交集如下:
sort file1.txt file2.txt | uniq -d > newlist.txt