1

我有一个脚本可以在开始视频编码之前检测裁剪值。我以一定的间隔进行几次探测,比如每 100 帧。如果所有探测帧的所有裁剪值都匹配,则没有问题,脚本将启动编码功能。如果裁剪值不同,则脚本退出并出现错误,我需要手动选择正确的裁剪值,这很烦人。

因此,与其因错误退出脚本,我宁愿选择“最佳”可能值,在这种情况下,它是重复次数最多的数字。

那么如何从集合中挑选出重复次数最多的字符串呢?

说,我将所有裁剪值放在一个数组中。裁剪=('3' '4' '3' '5' '7' '3' '7'); 所以在这种情况下,我会选择值“3”,因为它最常重复。如何在 Bash 中以编程方式执行此操作?

谢谢。

- 编辑 -

我很抱歉,为了简化我的问题,我可能会让你们中的一些人感到困惑。真正的作物值看起来像这样“720:568:0:4”。

4

1 回答 1

2

使用关联数组的纯 bash 解决方案(需要 bash 版本 4):

#! /bin/bash
crop=(3 4 3 5 7 3 7)
declare -A count
max=0
for c in "${crop[@]}" ; do
    (( count[$c]++ ))
    if (( count[$c] > max )) ; then
        max=${count[$c]}
        idx=$c
    fi
done
echo $idx
于 2013-03-19T00:20:35.367 回答