基于两列对BIG文件进行排序

时间:2011-11-21 09:00:37

标签: java linux sorting external

我有一个大文件无法放入我想要排序的内存中。该文件由两列和多个记录组成。第一列是~10位的数字类型,第二列是包含任何打印字符的字符串(根据ASCII码排序)。

我需要根据数字字段对记录进行排序,但是如果两个记录具有相同的数字字段,我希望根据字符串即第二列进行排序。

为此,我尝试使用Linux排序进行排序,该排序采用外部排序,但问题是它不基于ASCII码对字符串进行排序。任何的想法?!!

1 个答案:

答案 0 :(得分:4)

GNU排序实用程序根据当前区域设置进行排序。请参阅联机帮助页中的注释:

   *** WARNING *** The locale specified by the environment affects sort order.  Set LC_ALL=C to get the traditional sort order that uses native byte values.

您可以使用-n标志进行数字排序,或者使用-k以使用数字和非数字排序的组合。例如:

sort -k1 -k2n

将根据第一列进行文本排序,然后根据第二列进行数字排序。