如何对列进行分层排序?

时间:2013-06-25 14:40:16

标签: unix sorting

如何按2个单独的列排序?例如,我想先按第6列排序,然后按第4列排序

 column4  column5    column6
 lae2894      603    user1
 e2894       2096    user1
 e2894       2096    user1
 e2894       2096    user1
 lae2894      603    user1
 lae2894      603    user1

这些已按以下命令排序:

sort -t, -k6 users.txt > sorted-user.txt

但我想要的输出应该是这样的:

 column4      column5      column6
 e2894            603        user1
 e2894           2096        user1
 e2894           2096        user1
 laee2894        2096        user1
 lae2894          603        user1
 lae2894          603        user1

2 个答案:

答案 0 :(得分:1)

sort的大多数版本都允许多个关键规范。试试这个:

sort -t, -k6,6 -k4,4 input.txt

我假设您的实际输入文件使用,作为分隔符,因为您在示例命令中指定了这一点(这意味着您粘贴的“示例”数据并不真正代表您的文件...)。另请注意,只有一个数字的密钥规范(如-k6)表示从该字段开始并延伸到行尾的单个密钥,因此为了指定要排序的单个字段,需要使用上面的语法。

答案 1 :(得分:1)

-k的{​​{1}}选项可多次出现。尝试:

sort

有关详情,请参阅sort invocation

sort -t, -k6,6 -k4,4 inputfile