QAS*_*ing 3 regex grep time-format
在我的build.xml文件中,我想在shell脚本中使用正则表达式来提取时间d hr d min d sec格式.并且时间不会总是处于相同的模式,例如:
1 sec
1 min
2 min 3 sec
4 hr 5 min
Run Code Online (Sandbox Code Playgroud)
现在我想使用正则表达式从我的文件中获取时间值.在xml文件中,它将在value标记中:
<value>1 hr 54 min</value>
Run Code Online (Sandbox Code Playgroud)
我曾经使用 cat build.xml | grep -oP '(?<=<value>).*sec?(?=</value>)'
但在这种情况下它只会打印几秒钟或同样我只能打印最少.
请帮助我这个正则表达式.
这个怎么样?
echo '<value>4 hr 3 sec</value>'
| grep -oP '(?<=<value>)(\d+\s+hr)?(\s*\d+\s+min)?(\s*\d+\s+sec)?(?=</value>)'
4 hr 3 sec
echo '<value>3 sec</value>' |
grep -oP '(?<=<value>)(\d+\s+hr)?(\s*\d+\s+min)?(\s*\d+\s+sec)?(?=</value>)'
3 sec
Run Code Online (Sandbox Code Playgroud)