Bash:如何计算数组中唯一值的数量并检索具有最多重复项的值

4
我有一个Bash脚本,它将不同的宽度:高度值推送到数组的末尾。其中一些值是重复的。我需要做的是循环遍历数组,计算数组中每个唯一值的出现次数,然后获取具有最多重复项的值。
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吗?如果可以,使用关联数组并交换键和值。 - kojiro
1个回答

4

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接