【发布时间】:2013-08-14 02:41:46
【问题描述】:
我有一个非常大的文件,超过 100GB(数十亿行),我想在内存有限的 unix 系统上尽快进行两级排序。这将是大型 perl 脚本中的一个步骤,所以如果可能的话,我想使用 perl。
那么,我该怎么做呢?我的数据如下所示:
A 129
B 192
A 388
D 148
D 911
A 117
...但是对于数十亿行。我需要先按字母排序,然后按数字排序。使用unix排序会更容易吗,比如...
sort -k1,2 myfile
或者我可以以某种方式在 perl 中完成这一切吗?我的系统会有 16GB 的内存,但文件大约是 100GB。
感谢您的任何建议!
【问题讨论】:
-
所有数字都是3位数吗?如果不是,它们是否右对齐?如果这两个条件都成立(所有 3 位数字或右对齐),那么您只需要单级文本排序。
-
@Jim,感谢您的评论。不,数字范围从 1 到 100,000,000,这些只是较大电子表格(基因组测序数据)中不相邻的两列