用什么算法删除重复项?

Mon*_*ory 4 algorithm duplicates

想象一下,我们有一些文件,例如"A.txt".我们知道,一些重复的元素."A.txt" 非常大,比内存大十倍,可能大约50GB.有时,B的大小将近似等于A的大小,有时它将比A的大小小许多倍.让它具有如下结构:

a 1
b 2
c 445
a 1
Run Code Online (Sandbox Code Playgroud)

我们需要获取文件"B.txt",它不会有这样的重复.例如,它应该是这样的:

a 1
b 2
c 445
Run Code Online (Sandbox Code Playgroud)

我想到了复制A并执行B的算法,然后在B中获取第一个字符串,并查找彼此,如果发现相同,则删除重复项.然后取第二个字符串等

但我认为这是方式过于缓慢.我可以用什么?

A 不是数据库!请不要SQL.

对不起,没说,排序还可以.

虽然可以对它进行排序,但如果它无法排序呢?

mbe*_*ish 6

一种解决方案是对文件进行排序,然后一次将一行复制到新文件,过滤掉连续的重复项.

那么问题就变成了:你如何对一个太大而不适合内存的文件进行排序?

以下是Unix排序的方法.

另见这个问题.