linux 为什么`\d`不能在sed的正则表达式中工作?

iklwldmw  于 2023-05-28  发布在  Linux
关注(0)|答案(3)|浏览(118)

我尝试在sed中的regex中使用\d,但它不起作用:

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

但这是有效的:

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

vybvopom1#

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

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

zpqajqem2#

sed中没有这样的特殊字符组。你必须使用[0-9]
在GNU sed中,\d引入了一个十进制字符代码,在0-255范围内有一到三位数字。如本评论所述。

gblwokeq

gblwokeq3#

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

相关问题