我尝试在sed中的regex中使用\d,但它不起作用:
\d
sed -re 's/\d+//g'
但这是有效的:
sed -re 's/[0-9]+//g'
vybvopom1#
\d是一个开关,而不是正则表达式宏。如果你想使用一些预定义的“常量”而不是[0-9]表达式,只需运行以下代码:
[0-9]
s/[[:digit:]]+//g
zpqajqem2#
sed中没有这样的特殊字符组。你必须使用[0-9]。在GNU sed中,\d引入了一个十进制字符代码,在0-255范围内有一到三位数字。如本评论所述。
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.
-E
-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.
3条答案
按热度按时间vybvopom1#
\d
是一个开关,而不是正则表达式宏。如果你想使用一些预定义的“常量”而不是[0-9]
表达式,只需运行以下代码:zpqajqem2#
sed中没有这样的特殊字符组。你必须使用
[0-9]
。在GNU sed中,
\d
引入了一个十进制字符代码,在0-255范围内有一到三位数字。如本评论所述。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.