awk对多个接近100g的文件进行去重
a.txt和b.txt一个90gb 一个80gb
我的机器只有32G的内存
目前用的办法是搜来的
awk '!a[$0]++' a.txt b.txt > c.txt
然后没几分钟内存直接撑爆
大概c.txt生成到9个G左右,awk的cpu占用率变成0% 再也不动了
请教下有没有办法解决
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我自己找到了..
sort -us --parallel=16 dup.txt -o uniq.txt
这样写要把所有的不重复的行读入内存,90G 和 80G 如果有大量不重复的显然是不行的。
用你熟悉的语言用 B- 树实现比较好。
如果输出顺序没有限制的话,用外排算法然后
uniq
比较简单。