为什么这个匹配数字的sed命令不起作用?

Han*_*Sun 10 linux bash shell sed

我的命令是这样的:

echo "12 cats" | sed 's/[0-9]+/Number/g'
Run Code Online (Sandbox Code Playgroud)

(我正在使用sed香草Mac)

我希望结果如下:

Number cats
Run Code Online (Sandbox Code Playgroud)

但是,真正的结果是:

12 cats
Run Code Online (Sandbox Code Playgroud)

有没有人有这个想法?谢谢!

cho*_*oba 20

+ 必须被反击以获得其特殊含义.

echo "12 cats" | sed 's/[0-9]\+/Number/g'
Run Code Online (Sandbox Code Playgroud)

  • 啊哈,谢谢!(Mac sed过于保守,无法识别`+`修饰符.`-E`开关打开扩展正则表达式,其中`+`无效.) (3认同)
  • 这对我也不起作用(vanilla Mac sed). (2认同)

zou*_*oul 17

扩展+修饰符对我有用:

echo "12 cats" | sed 's/[0-9][0-9]*/Number/g'
Run Code Online (Sandbox Code Playgroud)

此外,-E开关将使+修改器工作,请参阅choroba的答案.