如何在具有相同数值的列表中按字母顺序对元素进行排序

时间:2015-04-28 20:12:33

标签: bash

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

我计算了bash历史记录中使用命令的次数。我使用了以下代码:

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

注意cat $ {!#}是deafult的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

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

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

输出中的命令是否与所需输出相反,这只是巧合吗?或者他们默认按降序排序?

1 个答案:

答案 0 :(得分:2)

尝试使用GNU排序:

sort -k2nr -k1,1 file

输出:

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