Bash排序逗号以数字方式分隔列,然后按字母顺序分隔

时间:2017-09-03 04:47:19

标签: bash sorting

我试图先按第三列以反向(降序)数字排序3列,然后按字母顺序按第一列排序(以打破关系)。条目以逗号分隔(,)。

例如,我的数据集是:

y,5,50
x,10,50
z,4,100

预期产出:

z,4,100
x,10,50
y,5,50

然而,我得到的输出是:

z,4,100
y,5,50
x,10,50

我正在使用:

sort -t, -k3,3 -n -r -k1,1 filename

不确定为什么这不起作用。

2 个答案:

答案 0 :(得分:2)

我建议将-k3,3 -n -r替换为-k3,3nr

sort -t, -k3,3nr -k1,1 file

输出:

z,4,100
x,10,50
y,5,50

答案 1 :(得分:1)

您建议的原因不起作用的原因是您已在全局范围内应用了标记-n-r,因此字母排序也会-r翻转。要在每个键的基础上应用标志,请使用:

sort -t, -k3,3nr -k1,1 filename

这给出了预期的输出:

z,4,100  
x,10,50  
y,5,50