我的命令是这样的:为什么这个sed命令匹配号码不起作用?
echo "12 cats" | sed 's/[0-9]+/Number/g'
(我使用的是sed
香草苹果机)
我希望得到的结果是:
Number cats
然而,真正的结果是:
12 cats
有没有人有这方面的想法?谢谢!
我的命令是这样的:为什么这个sed命令匹配号码不起作用?
echo "12 cats" | sed 's/[0-9]+/Number/g'
(我使用的是sed
香草苹果机)
我希望得到的结果是:
Number cats
然而,真正的结果是:
12 cats
有没有人有这方面的想法?谢谢!
扩大+
修改工作对我来说:
echo "12 cats" | sed 's/[0-9][0-9]*/Number/g'
此外,-E
开关将使+
修改工作,看到choroba的答案。
似乎BSD sed默认不支持'+ .. – 2013-05-09 14:30:18
使用Perl,这将工作在UNIX或Linux。
echo "12 cats" | perl -pe 's/\d+/Number/g'
在未(在资源至少我迄今..)解释一个非常神秘的方式, 您应该检查了下方面:
通配符(在bash的上下文中) , 正则表达式, 扩展的正则表达式
对于你的问题似乎是你给的sed的EXPR”是一个正则表达式或扩展正则表达式....所以由教程中,我读你应该在你的实际还插入了-r命令在sed ...
回声“12只猫”| sed -r's/[0-9] +/Number/g'
适用于Ubuntu 16.04,bash。
我没有看到它是4年前....可能我的回答不再是关键任何更多哈哈......但它强调我的第一行的答案。 – YigalO 2017-07-08 09:37:17
对于linux,你可以使用'-r'选项来sed,对于Mac,你可以使用'-E' ...这也适用于Linux的一些变种作为兼容性shim – Petesh 2013-05-09 14:27:07