java - 基于两列对大文件进行排序

标签 java linux sorting external

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

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

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

最佳答案

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

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

关于java - 基于两列对大文件进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8209373/

相关文章:

java - Play Framework 在所有其他作业之后运行作业

linux - 使用 mono/xbuild 编译 VS2015 应用程序时遇到问题

python - 如何判断数组中是否只有一定数量的数字是连续的

Python - 用于比较自定义订单的 lambda 比较器函数

python - 如何在由一列定义的分区内进行排序,但将分区保留在原处?

java - Java中的for-each尝试转换元素类型

java - 没有 XML 的 Android AdMob

java - spring data mongorepository.save E11000 有时出现重复键错误索引

linux - Ansible ad-hoc 命令有效,但在 ansible playbook 中不起作用

c - 在 fork() 之后,为什么存储从另一个函数返回的 malloc char** 的局部变量不显示任何内容?