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

时间:2013-02-03 09:57:49

标签: regex linux awk sed

我正在尝试在sed中的正则表达式中使用\d,但它不起作用:

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

但这有效:

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

3 个答案:

答案 0 :(得分:33)

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

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

答案 1 :(得分:19)

sed中没有这样的特殊字符组。您必须使用[0-9]

在GNU sed中,\d引入了0到255范围内的一到三位十进制字符代码。 如上所示in this comment

答案 2 :(得分:-2)

通过添加-E,您最好在sed中使用扩展模式。 在基本的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.