反向自然排序?

时间:2018-10-18 15:03:37

标签: linux bash shell unix

我正在尝试以这种方式对文本文件进行排序:

6 aaa
4 bbb
2 ccc
2 ddd

也就是说,每行以数字降序排列(数字表示右边一个单词的出现次数),并且如果多个单词重复相同的次数,我希望这些单词按字母顺序排序。

我所拥有的:

6 aaa
4 bbb
2 ddd
2 ccc

当我尝试sort -nr | sort -V时,它会做我想做的事情,但顺序是递增的。

2 ccc
2 ddd
4 bbb
6 aaa

有什么干净的方法可以做到这一点?

2 个答案:

答案 0 :(得分:2)

我认为您只需要指定数字反向排序仅适用于第一个字段:

$ sort -k1,1nr file
6 aaa
4 bbb
2 ccc
2 ddd

-k1,1[OPTS]表示OPTS仅适用于第一字段和第一字段之间。该行的其余部分根据全局排序选项进行排序。在这种情况下,由于没有传递其他选项,因此这意味着默认的字典排序。

答案 1 :(得分:-3)

也许使用tac? (这里不是shell专家,只是想起一整天...

sort -nr | sort -V | tac