Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
bash,查找变量中的所有字符串_Bash_Var_Cut - Fatal编程技术网

bash,查找变量中的所有字符串

bash,查找变量中的所有字符串,bash,var,cut,Bash,Var,Cut,我正在制作一个脚本,从视频文件中获取DAR信息。 为此,我成功地使用了这个脚本 DAR=$(ffmpeg -i "$DOSSIER/$OLD_NAME.$EXTENSION" -hide_banner 2>&1 | grep -i -oP "DAR [0-9]+:[0-9]+") # if DAR not exist set it to 1 if [ -z "$DAR" ]; then DAR="DAR 1:1" fi X_DAR=$(echo "${DA

我正在制作一个脚本,从视频文件中获取DAR信息。 为此,我成功地使用了这个脚本

DAR=$(ffmpeg -i "$DOSSIER/$OLD_NAME.$EXTENSION" -hide_banner 2>&1 | grep -i -oP "DAR [0-9]+:[0-9]+")
# if DAR not exist set it to 1
if [ -z "$DAR" ];
    then 
        DAR="DAR 1:1"
fi
X_DAR=$(echo "${DAR:4}" | cut -d: -f1)
Y_DAR=$(echo "${DAR:4}" | cut -d: -f2)
我的主要问题是,有时候,视频有多个DAR,所以我的输出看起来像

echo $DAR
DAR 16:9 DAR 5:4 DAR 234:211
从那里开始,我需要在DAR后面有最多的可用操作。可能有2个或10个DAR可用

有什么想法吗?
谢谢

如果您想按
剩下的数字进行排序,请执行以下操作:

for((n=1;n<$(echo $DAR | wc -w)+1;n+=2)); do echo $DAR | cut -d' ' -f$n,$(($n + 1)); done | sort -k2 --numeric-sort -r | head -n1
for((n=1;n<$(echo $DAR | wc -w)+1;n+=2)); do echo $DAR | cut -d' ' -f$n,$(($n + 1)); done | sort -t: -k2 --numeric-sort -r | head -n1
输出:

DAR 234:211
编辑:

现在,首先将这两个数字相除,然后根据结果对它们进行排序

for((n=1;n<$(echo $DAR | sed "s/ /\n/g" | wc -l)+1;n+=2)); do echo $DAR | cut -d' ' -f$n,$(($n + 1)); done | awk -F'[ :]' '{printf "%s %s:%s;%s\n",$1,$2,$3,$2/$3}' | sort -t';' -k2 --numeric-sort | tail -n1 | cut -d';' -f1

for((n=1;n哪个数字必须是最大的?从
左边的还是右边的?最大的可以是DAR中的任何一个。:“意味着被分割(/)。所以16:9=177777777 5:4=1,25和234:211=110900474这里,最大的数字是16:9你不认为不带引号离开
$DAR
是一个错误吗?
echo“$DAR”| sort-t”-k2n | tail-n1应该足够了;-)?这个主意不错,我可以先进行除法,然后进行数字排序。我看看能找到什么that@Nexius2我用一种可能的方法扩展了答案,在排序之前进行除法。