按出现次数对bash脚本中的输出进行排序

时间:2017-08-31 12:21:51

标签: bash sorting

所以我输出的文本在一列中有http状态代码,在另一列中有ip地址。我不想按出现次数对此进行排序,以便

4 4 4 1 1 2 3 5

看起来像

uniq

这是第二列状态代码,ip地址不需要按任何特定顺序排序

因为4是最常见的,所以它应该是第一个,然后是1,依此类推。

然而,我所能找到的只是如何使用sort来计算出现次数,从而删除重复项并为每行添加一个数字前缀。

就我所知,常规 public void Put(string key, object value) { for (var i = 0; i < getArray.Length; ++i) { if (getArray[i] == null || getArray[i].key == key) { getArray[i] = new Paar(key, value); break; } if(i == getArray.Length - 1) throw new Exception("All slots full"); } } 命令不支持此功能。

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

您仍然可以使用sort | uniq -c,然后通过循环打印给定次数来解释出现次数:

tr ' ' '\n' < file \
| sort | uniq -c | sort -k1,1nr -k2n \
| while read times status ; do
    for i in $(seq 1 $times); do
        printf '%s ' $status
    done
done