我在shell脚本中尝试了一些测试,如下所示:
line="100:xx"
echo "$line" | grep -Po \\d+
结果:100
但是,
line="100:xx"
echo `echo "$line" | grep -Po \\d+`
结果为空
为什么?
答案 0 :(得分:4)
因为反引号允许扩展,例如双引号字符串,所以你的一个反斜杠很快被吃掉了:
$ echo `echo "$line" | grep -Po \\d+ | cat`
$ echo `echo "$line" | grep -Po \\\d+`
100
话虽如此,请引用正则表达式
$ echo `echo "$line" | grep -Po '\d+'`
100
答案 1 :(得分:2)
您也可以这样做:
echo $(echo "$line" | grep -Po \\d+)
避免你的反斜杠被吃掉。