如何在Linux中比较两个巨大的文本文件并获得差异

时间:2019-02-14 00:23:15

标签: python shell

我有两个文本文件,它们都大约有10亿行,但是一个文本文件比另一个文本文件多218行,我需要找出218行并将其保存以进行分析。

最快的解决方案是什么?是否有任何奇迹外壳命令或python库以最佳的效率提供所需的结果?

非常感谢您。

3 个答案:

答案 0 :(得分:0)

只需使用命令行工具diff

$ diff ./file1.txt ./file2.txt

答案 1 :(得分:0)

comm会比diff产生更多可读的输出(加上其输出更容易传递到其他内容),并且应该更有效:

$ cat file1.txt         
dog
cat
rabbit
$ cat file2.txt
cat
dog
rabbit
llama
$ comm -13 <(sort file1.txt) <(sort file2.txt)
llama

它的默认行为是打印三列-仅在file1中显示行,仅在file2中显示行,并在两者中都显示行。 -1-3禁止显示相应的列。如果file1包含多余的行,则应改用-23

如果您的外壳不支持<(command)样式重定向,则必须将文件排序为一个单独的步骤。

答案 2 :(得分:0)

只需运行命令即可获取两个文件(文件X和文件Y)之间的差异。

diff -U 0 x y

或者如果要将差异存储到其他文件(z),请运行命令

diff -U 0 x y >> z