- 我们有两个文件:
data.txt
和keys.txt
data.txt
是一些适当的带有N
行的unicode文本keys.txt
是一个以换行符分隔的整数列表,N
行- 输出文件
sorted.txt
,其中data.txt
中的行根据keys.txt
进行排序,而不需要写入中间文件paste -d',' keys.txt data.txt
我需要将其用于16-32 GB内存的机器上的大文件(数百GB(。
我的第一次尝试是用Python来做,这有点慢。它很简单,所以我们讨论了用C++做它。但我更喜欢它使用现成的工具,这样就不需要安装了。使用GNU或Unix工具很可能无法有效地做到这一点,但我对这方面的了解还不够。
您应该能够在不缓冲到文件的情况下完成此操作。对于性能,我想校准sort --buffer-size
将是第一步,也许第二步使用parallel
进行块排序。
paste keys.txt data.txt | sort -n -k1 | cut -f2-