在Bash中重新格式化输出

时间:2017-02-05 13:42:07

标签: bash ffmpeg

我使用此ffmpeg参数获取文件中的黑框:

ffmpeg -i ${arrayDesFichiers[$i]} -vf "blackdetect=d=3:pix_th=0.00" -an -f null - 2>&1 | grep black_duration >> log.txt

现在我在log.txt中找到了这个:

[blackdetect @ 0x7fd9add06bc0] black_start:0 black_end:3.2 black_duration:3.2

我想将其重新格式化为:

black duration : 3.2 seconds

我很确定它可以在Bash中使用但是怎么样?

1 个答案:

答案 0 :(得分:1)

你可以这样做:

ff_output=$(ffmpeg -i ${arrayDesFichiers[$i]} -vf "blackdetect=d=3:pix_th=0.00" -an -f null - 2>&1 | grep -oE "black_duration:[[:digit:]][.[:digit:]]*")
printf "%s seconds\n" "$ff_output" >> log.txt

grep -oE "black_duration:[[:digit:]]+[.[:digit:]]*

  • -o选项将grep输出限制为仅匹配的部分
  • -E选择扩展正则表达式
  • [[:digit:]]+[.[:digit:]]*查找一个或多个数字,可选地后跟一个句点和一个或多个数字