【问题标题】:Bash: how to count unique values in array and retrieve value with most duplicatesBash:如何计算数组中的唯一值并检索具有最多重复项的值
【发布时间】:2013-01-08 17:42:21
【问题描述】:

我有一个 bash 脚本,可以将不同的 width:height 值推送到数组的末尾。一些值是重复的。我需要做的是遍历数组,计算数组中每个唯一值的出现次数,然后检索重复次数最多的值。

dimensions=( )
dimensions[${#dimensions[*]}]="450:180"
dimensions[${#dimensions[*]}]="360:240"
dimensions[${#dimensions[*]}]="360:240"
dimensions[${#dimensions[*]}]="640:480"
dimensions[${#dimensions[*]}]="360:240"
dimensions[${#dimensions[*]}]="640:480"

在上面的数组中,我需要检索值“360:240”,因为有 3 个重复项。如何计算唯一值并最终得到一个包含数组中重复次数最多的值的变量?

mostDuplicates="360:240"

【问题讨论】:

  • 你可以使用 bash 4 吗?如果是这样,请使用关联数组并交换键和值。

标签: arrays bash


【解决方案1】:

Bash 版本 4 具有关联数组:

#! /bin/bash
dimensions=(
    450:180
    360:240
    360:240
    640:480
    360:240
    640:480)

declare -A count
max=0

for d in ${dimensions[@]} ; do
    if (( ++count[$d] > max )) ; then
        max=${count[$d]}
        winner=$d
    fi
done
echo Winner: $winner, $max times

【讨论】:

  • 完美。谢谢你的例子。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-10-02
  • 1970-01-01
  • 1970-01-01
  • 2018-06-17
  • 2021-02-15
  • 1970-01-01
  • 2021-11-12
相关资源
最近更新 更多