75

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

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

但这是有效的:

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

3 回答 3

58

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

s/[[:digit:]]+//g
于 2013-02-03T10:12:27.430 回答
33

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

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

于 2013-02-03T10:06:03.907 回答
-7

您最好在 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.

于 2016-11-15T04:39:40.687 回答