我的命令是这样的:
echo "12 cats" | sed 's/[0-9]+/Number/g'
(我正在使用sed
香草Mac)
我希望结果是:
Number cats
然而,真正的结果是:
12 cats
有人对此有想法吗?谢谢!
+
必须反斜杠才能获得其特殊含义。
echo "12 cats" | sed 's/[0-9]\+/Number/g'
扩展+
修饰符对我有用:
echo "12 cats" | sed 's/[0-9][0-9]*/Number/g'
此外,该-E
开关将使+
修饰符起作用,请参阅 choroba 的回答。
使用 perl,这将适用于 unix 或 linux。
echo "12 cats" | perl -pe 's/\d+/Number/g'
以一种没有解释的非常神秘的方式(至少在我目前拥有的资源中......),您应该检查下一个术语:
通配符(在 bash 的上下文中)、正则表达式、扩展正则表达式
对于您的问题,您给 sed 的 expr' 似乎是一个正则表达式或扩展正则表达式......所以通过我阅读的教程,您应该在 sed 中的实际命令之前插入 -r ...
回声“12 只猫” | sed -r 's/[0-9]+/数字/g'
在 Ubuntu 16.04 中为我工作,bash。