Regex 在BASH中用正则表达式提取数字

Regex 在BASH中用正则表达式提取数字,regex,bash,Regex,Bash,我有一个运行命令的脚本,比如 $exiftool 3PDKI5ZYHBGNOTEU4JP.mov | grep-m1持续时间 根据我得到的文件,结果如下 Duration : 01:25 Duration 01:25 Duration 01.25 我只想从这些字符串中提取时间,即01:25或1.25 试试这个: ....|grep -o "[^

我有一个运行命令的脚本,比如 $exiftool 3PDKI5ZYHBGNOTEU4JP.mov | grep-m1持续时间 根据我得到的文件,结果如下

Duration                        : 01:25  
Duration                        01:25  
Duration                        01.25  
我只想从这些字符串中提取时间,即01:25或1.25

试试这个:

....|grep -o "[^ ]*$"
或者这个简短的:

...|awk '$0=$NF'
试试这个:

....|grep -o "[^ ]*$"
或者这个简短的:

...|awk '$0=$NF'

这对我有用。awk只取空格后的最后一列,我添加了tr,以防你想成为一个完美主义者,并且只有hh:mm格式,而不是hh.mm格式

exiftool 3PDki5ZyhBgnoTEUu4JP.mov|grep -m1 Duration | awk '{ print $NF }' | tr '.' ':'

这对我有用。awk只取空格后的最后一列,我添加了tr,以防你想成为一个完美主义者,并且只有hh:mm格式,而不是hh.mm格式

exiftool 3PDki5ZyhBgnoTEUu4JP.mov|grep -m1 Duration | awk '{ print $NF }' | tr '.' ':'

AWK AWK@AlexFlo忘了提到,如果行中有尾随空格,grep将不起作用,使用AWK。或者这个grep:…|grep-oP'[^]*?=*$我更喜欢AWK的例子:-我甚至开始阅读关于AWK的教程,它确实是强大和有用的。谢谢。@AlexFlo是的,我认为awk、sed和grep是像我这样懒惰的人的工具。如果知道这三种工具,就可以完成95%的文本处理我很懒,不想记住剪切、连接、粘贴、pr、seq、comm等不同选项:@AlexFlo忘了提到,如果行中有尾随空格,grep将不起作用,请使用awk。或者这个grep:…|grep-oP'[^]*?=*$我更喜欢AWK的例子:-我甚至开始阅读关于AWK的教程,它确实是强大和有用的。谢谢。@AlexFlo是的,我认为awk、sed和grep是像我这样懒惰的人的工具。如果知道这三种工具,就可以完成95%的文本处理我很懒,不想记住剪切、连接、粘贴、pr、seq、comm等不同选项: