正则表达式抓住一组数字

时间:2013-02-03 06:15:04

标签: regex bash sed

我已经工作了几个小时,如何编写一个bash脚本的正则表达式,只能抓取一组超过2个数字。例如,如果我有#jk2478_0.JPEG,我只想返回2478.我可以返回所有数字,但无法计算如何在此示例的结果中不包含0。这是我到目前为止所拥有的。

i='#jk2478_0.JPEG';
f=`echo $i | sed s/[^0-9]*[^0-9]//g`
echo $f #24780

3 个答案:

答案 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/`