awk对多个接近100g的文件进行去重

发布于 2022-09-04 13:46:17 字数 200 浏览 22 评论 0

a.txt和b.txt一个90gb 一个80gb
我的机器只有32G的内存
目前用的办法是搜来的

awk '!a[$0]++' a.txt b.txt > c.txt 

然后没几分钟内存直接撑爆
大概c.txt生成到9个G左右,awk的cpu占用率变成0% 再也不动了
请教下有没有办法解决

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

陌伤ぢ 2022-09-11 13:46:17

我自己找到了..

sort -us --parallel=16 dup.txt -o uniq.txt

2022-09-11 13:46:17

这样写要把所有的不重复的行读入内存,90G 和 80G 如果有大量不重复的显然是不行的。

用你熟悉的语言用 B- 树实现比较好。
如果输出顺序没有限制的话,用外排算法然后uniq比较简单。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文