逐行比较两个未排序的文件,仅输出文件1和文件2中的行,但不在文件1中

时间:2015-06-07 08:42:36

标签: php python grep

我需要逐行比较两个未排序的文件,只输出文件1和文件2中的行,但不是文件1中的输出行。本质上给我两个文件中的每个文件都有新的+相同的字符串,并且不包括旧文件/不存在的字符串。

我需要在一些非常大的文件上执行此操作。 (10+ GB)(约1,000,000行)。

我尝试过以下几个选项,但没有什么能满足我的需要:

join -v1 -v2 <(sort File1.txt) <(sort File2.txt) > File3.txt

这个“join”似乎给了我File1.txt和/或File2.txt中的行。 (基本上给我一个联合收割机+独特的命令)。 (这几乎是正确的,但如果它们不在第二个文件中,但是在第一个文件中,我需要这个来排除行/字符串。

fgrep -vf File1.txt File2.txt > File3.txt

这可行但是如你所知,在大文件上非常慢并且实际上不是一个选项。

区分大小写会很好,但根本不需要。我提到这个的原因是因为在我的研究中我发现如果比较不区分大小写,它会加速搜索。

提前再次感谢。

1 个答案:

答案 0 :(得分:0)

一点也不清楚你想要做什么,但试试这个:

comm <(sort File1.txt) <(sort File2.txt)

man comm用于您需要的任何参数。