我正在尝试在sed中的正则表达式中使用\d
,但它不起作用:
sed -re 's/\d+//g'
但这有效:
sed -re 's/[0-9]+//g'
答案 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.