a.txt和b.txt一个90gb 一个80gb
我的机器只有32G的内存
目前用的办法是搜来的
awk '!a[$0]++' a.txt b.txt > c.txt
然后没几分钟内存直接撑爆
大概c.txt生成到9个G左右,awk的cpu占用率变成0% 再也不动了
请教下有没有办法解决
a.txt和b.txt一个90gb 一个80gb
我的机器只有32G的内存
目前用的办法是搜来的
awk '!a[$0]++' a.txt b.txt > c.txt
然后没几分钟内存直接撑爆
大概c.txt生成到9个G左右,awk的cpu占用率变成0% 再也不动了
请教下有没有办法解决
这样写要把所有的不重复的行读入内存,90G 和 80G 如果有大量不重复的显然是不行的。
用你熟悉的语言用 B- 树实现比较好。
如果输出顺序没有限制的话,用外排算法然后uniq
比较简单。
1 回答627 阅读
2 回答1.2k 阅读
我自己找到了..
sort -us --parallel=16 dup.txt -o uniq.txt