20

我的命令是这样的:

echo "12 cats" | sed 's/[0-9]+/Number/g'

(我正在使用sed香草Mac)

我希望结果是:

Number cats

然而,真正的结果是:

12 cats

有人对此有想法吗?谢谢!

4

4 回答 4

24

+必须反斜杠才能获得其特殊含义。

echo "12 cats" | sed 's/[0-9]\+/Number/g'
于 2013-05-09T14:19:58.663 回答
22

扩展+修饰符对我有用:

echo "12 cats" | sed 's/[0-9][0-9]*/Number/g'

此外,该-E开关将使+修饰符起作用,请参阅 choroba 的回答。

于 2013-05-09T14:24:03.560 回答
3

使用 perl,这将适用于 unix 或 linux。

echo "12 cats" | perl -pe 's/\d+/Number/g'
于 2015-08-14T08:38:03.630 回答
0

以一种没有解释的非常神秘的方式(至少在我目前拥有的资源中......),您应该检查下一个术语:

通配符(在 bash 的上下文中)、正则表达式、扩展正则表达式

对于您的问题,您给 sed 的 expr' 似乎是一个正则表达式或扩展正则表达式......所以通过我阅读的教程,您应该在 sed 中的实际命令之前插入 -r ...

回声“12 只猫” | sed -r 's/[0-9]+/数字/g'

在 Ubuntu 16.04 中为我工作,bash。

于 2017-07-08T09:34:37.217 回答