我得到了这个输出:
Duration: 00:03:27.05, start: 0.000000, bitrate: 336 kb/s
我想00:03:27.05
从整个字符串中提取(值可以更改)。
到目前为止,我已经尝试过:
String="Duration: 00:03:27.05, start: 0.000000, bitrate: 336 kb/s"
String="${String#*:}"
String="${String%,*,*}"
echo $String
它给出了预期的结果,但在这里我必须String
两次声明变量并且必须分别剪切字符串的特定部分。
所以我只想知道一种最简单直接的方法来做到这一点。
在此先感谢您的帮助:)
你可以尝试类似的东西
awk
:例子:
假设这个特定的时间模式是你的字符串中唯一的一个,一个非常简单的方法是简单地使用带有 -P 标志的 grep ,它允许我们将模式解释为 Perl 兼容的正则表达式:
这将输出
00:03:27.05
Bash 允许您使用 POSIX ERE 正则表达式:
在普通的 Bourne shell 中,
/bin/expr
是标准工具:(请注意,expr 使用 BRE 正则表达式语法而不是 ERE,因此分组使用
\( \)
并且+
运算符不可用。此外,expr 的正则表达式隐式锚定到字符串的开头,而=~
搜索字符串中的任何位置。)