0

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

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

3 回答 3

1
$ echo '#jk2478_0.JPEG,' | grep -E -o '[0-9]{2,}'
2478

-o表示仅匹配

于 2013-02-03T06:23:16.947 回答
1

使用 sed 的其他方式

echo '#jk2478_0.JPEG,' | sed -re 's/(.*)([a-zA-Z]+)([0-9]+)(.*)/\3/'
于 2013-02-04T08:16:00.500 回答
0

也许这个?

f=`echo $i | sed s/.*([0-9]\{2,\}.*/\1/`
于 2013-02-03T06:23:27.640 回答