为什么`\ d`在sed中的正则expression式中不起作用?

我试图在sed中使用正则expression式,但它不工作:

 sed -re 's/\d+//g' 

但是,这是工作:

 sed -re 's/[0-9]+//g' 

Solutions Collecting From Web of "为什么`\ d`在sed中的正则expression式中不起作用?"

\ d是一个不是正则表达式宏的开关。 如果你想使用一些预定义的“常量”而不是[0-9]表达式,只要运行这个代码

 s/[[:digit:]]+//g 

sed中没有这样的特殊字符组。 你将不得不使用[0-9]

在GNU sed中, \d在0-255范围内引入一到三位数字的十进制字符代码。 正如本评论所示

你最好在sed中使用扩展模式,加入-E 。 在基本RegExp中,\ d和其他一些不会被检测到-E Interpret regular expressions as extended (modern) regular expressions rather than basic regular expressions (BRE's). The re_format(7) manual page fully describes both formats.-E Interpret regular expressions as extended (modern) regular expressions rather than basic regular expressions (BRE's). The re_format(7) manual page fully describes both formats. -E Interpret regular expressions as extended (modern) regular expressions rather than basic regular expressions (BRE's). The re_format(7) manual page fully describes both formats.