You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何高效将两个已排序大文件合并为单个有序去重的独立文件

两个已排序超大文件的高效合并方案

直接用Linux系统内置的sort命令原生支持的有序合并能力即可,无需额外开发或安装工具,是目前性能最优的方案:

sort -mu 已排序文件1 已排序文件2 > 合并后有序去重文件

参数说明

  • -m:该参数专门用于合并多个已经提前排好序的输入文件,不会触发全量重排序逻辑,仅采用归并算法线性扫描两个文件逐行比对输出,时间复杂度为O(n),完美适配你的十亿行级超大文件场景,全程不会消耗多余的排序算力
  • -u:自动去重,遇到两个文件中重复的行仅保留1个,直接满足全局唯一的要求

和原方案的性能差异

你最初考虑的先合并文件再执行sort -u的方案需要对全量数据做重新排序,十亿行级数据会占用大量内存,还会生成大量临时磁盘文件做外部排序,耗时是上述方案的数倍到数十倍不等。而-m参数完全利用了两个文件本身已排序的特性,内存占用极低,仅需要存储两个文件当前待比对的行即可,不会加载全量文件内容到内存。

注意事项

如果你的两个原始文件是使用C语言locale排序得到的,执行合并命令前可以先指定locale避免排序规则不一致导致结果出错:

LC_ALL=C sort -mu 已排序文件1 已排序文件2 > 合并后有序去重文件

内容的提问来源于stack exchange,提问作者Anoiar El Fachtali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 23:36:06