如何按字母顺序对字母进行反向排序,但是如果出现的次数多,则按字母顺序对其排序?

时间:2019-10-31 11:13:01

标签: unix

因此,我正在练习练习,但是遇到了一些令人困惑的事情。我需要计算文本文档中每个字母出现的次数,然后一个接一个地打印,出现的次数最多。

问题在于我需要按字母顺序对出现次数相同的字母进行排序。这是一个问题,因为排序会自动按字母顺序排序,因此当我按出现顺序反向排序时,它会自动以颠倒的字母顺序对出现次数相同的字母进行排序。

我尝试按列排序,因此它首先对数字进行排序,然后对字母进行排序,但这是行不通的。

现在让我们处理几个字母。

echo eeeeerrrbbbcccnN | tr a-z A-Z | grep -iE [a-z] -o | sort | uniq -c | sort -rn | tr -d 0-9'\n '

输出为ERCBN,但必须为EBCRN。

1 个答案:

答案 0 :(得分:2)

您可以指定多个排序条件:

$ # OP's attempt
$ echo eeeeerrrbbbcccnN | tr a-z A-Z | grep -iE [a-z] -o | sort | uniq -c | sort -rn
      5 E
      3 R
      3 C
      3 B
      2 N

$ # multiple column sort
$ # also note the change in grep command
$ echo eeeeerrrbbbcccnN | tr a-z A-Z | grep -o [A-Z] | sort | uniq -c | sort -k1,1nr -k2,2
      5 E
      3 B
      3 C
      3 R
      2 N