我的文件包含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命令来实现这一目标?
答案 0 :(得分:3)
命令 sort -k1,1n -k3,3nr
应该有效。
它只对第一列进行排序(这是 -k1 和 -k1,1 之间的区别),因此它可以达到第二个参数。
请注意, sort -k1,1n -k3nr
也可能有用。
有关多键排序的详情:Sorting multiple keys with Unix sort或https://unix.stackexchange.com/questions/52762/trying-to-sort-on-two-fields-second-then-first
答案 1 :(得分:1)
请试试这个:
sort -k1n -k3rn
<强>解释强>
-k#
选项:指定用作排序键的列。
-n
:根据字符串数值进行比较。
-r
:反转指定键的排序顺序。