开发者社区 问答 正文

按bash中分组的出现次数进行排序

bash中如何排序?

输入:

1
2
3
1
1
2

输出:

1
1
1

2
2

3

我想在组之间用空白的新行打印出现的最多次数。

展开
收起
祖安文状元 2020-01-07 14:31:24 395 分享 版权
1 条回答
写回答
取消 提交回答
  • processThatProducesInput | 
    sort | 
    uniq -c | 
    sort -k1,1nr |
    while read -r n data; do
        for ((i=1; i<=n; i++)); do 
            echo "$data"
        done
        echo
    done
    
    

    首先,我们对输入进行排序。这是一种词汇排序,但是如果需要的话可以是数字排序,这仅对相同大小的组才有意义:您希望这些排序的顺序是什么? 然后我们计算每个排序的组。 然后,我们按降序对组的大小进行排序。 然后,我们重新输出排序后的索引,并根据要求输出空白行。

    2020-01-07 14:31:32
    赞同 展开评论
问答分类:
问答地址: