我已经工作了几个小时,如何编写一个bash脚本的正则表达式,只能抓取一组超过2个数字。例如,如果我有#jk2478_0.JPEG,我只想返回2478.我可以返回所有数字,但无法计算如何在此示例的结果中不包含0。这是我到目前为止所拥有的。
i='#jk2478_0.JPEG';
f=`echo $i | sed s/[^0-9]*[^0-9]//g`
echo $f #24780
答案 0 :(得分:1)
$ echo '#jk2478_0.JPEG,' | grep -E -o '[0-9]{2,}'
2478
-o
表示仅匹配
答案 1 :(得分:1)
使用sed的其他方式
echo '#jk2478_0.JPEG,' | sed -re 's/(.*)([a-zA-Z]+)([0-9]+)(.*)/\3/'
答案 2 :(得分:0)
f=`echo $i | sed s/.*([0-9]\{2,\}.*/\1/`