将两个文本文件相互比较

时间:2011-05-14 17:39:37

标签: linux windows command-line

如果我需要文本文件,例如:

FILE1.TXT

apple
orange
pear
banana

FILE2.TXT

banana
pear

如何从file1.txt

中取出file2.txt行中的所有短语

所以file1.txt将留下:

apple
orange

3 个答案:

答案 0 :(得分:1)

grep -v -F -f file2.txt file1.txt

-v表示仅列出与模式不匹配的file1.txt行,-f表示从文件中获取模式,在本例中为file2.txt。 -F-将PATTERN解释为固定字符串列表,由换行符分隔,其中任何一个都要匹配。

grep命令内置在OS X和Linux上。在Windows上,你必须安装它;例如通过Cygwin

答案 1 :(得分:1)

如果文件很大(但也必须进行排序),comm可能比Ivan提出的更一般的grep解决方案更可取,因为它逐行操作,因此,不需要加载整个文件file2.txt到内存中(或搜索每一行)。

comm -3 file1-sorted.txt file2-sorted.txt | sed 's/^\t//'

删除由sed插入的主要标签页需要comm命令。

答案 2 :(得分:0)

combine file1 not file2

关于Debian和衍生产品,可以在moreutils包中找到。