【发布时间】:2016-11-27 03:11:28
【问题描述】:
我有两个文件,每行都有一个 UUID。每个文件都有几十万行(它们是从数据库转储生成的)。需要对这些文件进行分类并找到差异(添加/删除)。使用一些 *nix 工具很容易做到这一点,只需要几秒钟:
$ sort file-a.txt > file-a-sorted.txt
$ sort file-b.txt > file-b-sorted.txt
$ diff file-a-sorted.txt file-b-sorted.txt
但是,我想将此功能添加到我们拥有的 CLI(基于 Node 构建),该 CLI 旨在供多平台使用。因此,生成子流程并委托给这些工具不是一种选择。
“愚蠢”并将每个文件加载到内存中,在换行符上拆分并在结果数组上调用 .sort() 效果出奇的好(尽管使用了大量内存,但速度很快......)但发现差异证明了更难。
我确信答案在流领域的某个地方,但我缺乏操作它们的经验,所以我不确定从哪里开始。
使用 Node.js 加载、排序和区分此类大文件的有效技术有哪些?
我不是在寻找完整的解决方案(不过,请随意!),在这个阶段,指针会非常有用。
谢谢!
【问题讨论】:
标签: javascript node.js sorting diff node-streams