【问题标题】:How to sort elements alphabetically in a list that have same numeric values如何在具有相同数值的列表中按字母顺序对元素进行排序
【发布时间】:2015-04-28 20:12:33
【问题描述】:

首先,我不能使用 awk 或 sed!

我计算了一个命令在 bash 历史中被使用的次数。我使用了以下代码:

cat ${!#} | cut -f 1 -d " " | sort | uniq -c | sort -n | sort -r

请注意 cat ${!#} 是默认的 history.txt ,我使用 cut 来删除编号的行。另外我必须在最后使用sort -r,否则我会得到输出升序而不是降序(为什么会这样?)。

好的,我的主要问题是对具有相同重复次数的命令进行排序。目前我得到这个输出:

seq 3
ps 2
echo 2
cut 2
uname 1
nl 1
cmp 1

但我需要得到以下输出:

seq 3
cut 2
echo 2
ps 2
cmp 1
diff 1
nl 1
uname 1

是的。按重复次数对命令进行排序,如果其中任何一个相同,则按字母顺序排序。

我试图用另一种方法来解决这个问题,但到目前为止还没有取得太大的成功。

我的输出中的命令与所需的输出相反是否只是巧合?还是默认降序排列?

【问题讨论】:

    标签: bash


    【解决方案1】:

    用 GNU 排序试试这个:

    sort -k2nr -k1,1 file
    

    输出:

    序列 3 切 2 回声 2 附言 2 CMP 1 1 名字 1

    【讨论】:

    • sort -k2nr -k1,1r 我也不得不反转第一列,这很奇怪,但它有效。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2017-09-13
    • 2022-11-18
    • 2011-02-03
    • 2022-01-26
    • 2015-04-06
    • 1970-01-01
    • 2015-06-30
    • 1970-01-01
    相关资源
    最近更新 更多