2013-02-03 110 views

回答

21

\ d是一个不是正则表达式宏的开关。如果你想使用[0-9]表达的一些预定义的“常数” istead只是试图通过增加-E运行这段代码

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

但为什么'\ w'工作 – user2036880

+4

因为它写的是sed文档 “\ w 匹配任何”单词“字符。”单词“字符是任何字母或数字或下划线字符。 “另外,这个版本的sed支持多个转义字符(其中一些是多字符),以便在脚本中插入不可打印的字符(\ a,\ c,\ d,\ o ,\ r,\ t,\ v,\ x)。这些可能会导致为其他seds编写脚本的类似问题。“有关更多信息,请参阅http://www.gnu.org/software/sed/manual/sed.html – Kamil

+0

@ user2036880,正如我在答案的第二部分中指出的那样,在\ sed中\ d具有不同的含义。 –

13

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

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

-1

你最好使用扩展模式在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.

+1

'\ d'也不会被-E检测到。 –

相关问题