如何使用内置的“排序”程序同时按两个字段(一个数字,一个字符串)排序?

时间:2011-03-05 18:53:35

标签: linux shell unix sorting

我有一个文件,让我们说“bigfile”,包含以下表格的表格数据,

a1 b2 a3 1
b1 a2 c3 0
......等等。

我想在我的Linux机器上使用内置的“排序”程序,所以按第四个字段(数字)排序此文件,然后同时按第一个字段排序。我经历了几次手册页,我能想到的就是,

sort -n -k4,4 -k1,1 bigfile

有没有办法让“排序”做我想做的事情,或者我必须编写自己的自定义程序?

谢谢。

1 个答案:

答案 0 :(得分:30)

从联系手册:

  

POS是F [.C] [OPTS],其中F是   字段编号和C字符   在该领域的位置;两者都是起源   1.如果-t和-b都没有生效,   字段中的字符从中计算   前面的开头   空白。 OPTS是一个或多个   单字母订购选项,   它覆盖全局排序选项   为那把钥匙。如果没有给出密钥,请使用   整条线作为关键。

sort -k4,4n -k1,1 bigfile应该这样做。

另一个选项是sort -k1,1 bigfile | sort --stable -n -k4,4稳定排序意味着第四个字段上的关系由初始位置解析,初始位置由排序的第一个通道设置为第一个字段。