linux shell,按降序排列第3列,按升序排列第3列

时间:2016-08-29 10:07:17

标签: linux shell sorting

我的文件包含3列数字,如下面的5行数据

1 811036 395
2 811036 195
1 811036 295
2 811036 95
1 811036 95

我想按升序排序1列,按降序排列第3列,

1 811036 395
1 811036 295
1 811036 95
2 811036 195
2 811036 95

我试过" 排序-n -k 1 -n -k 3 "但失败了。 如何编写单个Linux shell命令来实现这一目标?

2 个答案:

答案 0 :(得分:3)

命令 sort -k1,1n -k3,3nr 应该有效。 它只对第一列进行排序(这是 -k1 -k1,1 之间的区别),因此它可以达到第二个参数。

请注意, sort -k1,1n -k3nr 也可能有用。

有关多键排序的详情:Sorting multiple keys with Unix sorthttps://unix.stackexchange.com/questions/52762/trying-to-sort-on-two-fields-second-then-first

答案 1 :(得分:1)

请试试这个:

 sort -k1n -k3rn

<强>解释

-k#选项:指定用作排序键的列。

-n:根据字符串数值进行比较。

-r:反转指定键的排序顺序。