为什么在 sed 中不能用正则表达式呢?

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

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

但这种做法奏效了:

sed -re 's/[0-9]+//g'
28053 次浏览

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

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

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

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

最好通过添加 -E在 sed 中使用 Extended 模式。 在基本的 RegExp 中,d 和其他一些不会被检测到 - E 将正则表达式解释为扩展(现代)正则表达式,而不是基本正则表达式(BRE)。Re _ format (7)手册页完全描述了这两种格式。