Cha*_*hap 5 diff text-processing
我有两个文件,all.txt(525,953,272 条记录)和subset.txt(525,298,281 条记录)。每条记录只不过是一个 17 位的 ASCII 整数。两个文件都已排序,每个文件中的重复记录已被删除。subset.txt 中的每个值也存在于all.txt 中。我希望能够找到的记录全部.txt不在subset.txt。
我试图diff
在这两个文件之间运行 a ,认为它会写出all.txt 中的行,但不是subset.txt 中的行。该机器有64GB的内存。在diff
已经运行了一个半小时,目前已获得有关内存的75%。
任何人都可以推测可能会发生什么,以及是否有论据diff
可能会有所帮助?这难道不是diff
我应该做的,我应该使用不同的方法吗?
任何人都可以推测可能会发生什么,以及 diff 是否有可能有帮助的论点?这不是 diff 的本意吗?我应该使用不同的方法吗?
这不是diff
本意要做的事;当输入已排序(如您所见)后,该作业的工具是comm
。
$ seq 10 15 > subset.txt
$ seq 10 20 > all.txt
$ comm -13 subset.txt all.txt
16
17
18
19
20
Run Code Online (Sandbox Code Playgroud)
的选项comm
有点不寻常,因为它们会关闭输出。第 1 列包含文件 1 特有的行;第 2 列包含文件 2 特有的行;第 3 列的行是两者“共有”的。通过使用选项,-13
我们要求 comm 向我们显示仅在“all.txt”中的行。