我有一个脚本在开始视频编码之前检测裁剪值。 我会以一定的间隔进行多次探测,比如说每100帧一次。 如果所有探测帧的所有裁剪值都匹配,那么就没有问题,并且脚本会在编码函数中启动。如果裁剪值不同,则脚本会退出并出现错误,我需要手动选择正确的裁剪值,这很烦人。
因此,我宁愿选择“最佳”可能值,而不是退出脚本,而在这种情况下,该值是重复次数最多的数字。
那么如何从最重复的集合中挑选一个字符串呢?
说,我把所有裁剪值都放在一个数组中。 裁剪=('3''4''3''5''7''3''7'); 所以在这种情况下,我会选择值'3',因为它经常重复。 如何在Bash中以编程方式执行此操作?
感谢。
- 编辑 -
我道歉,为了简化我的问题,我可能会让你们有些困惑。 实际裁剪值看起来像“720:568:0:4”。
答案 0 :(得分: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