为什么`\ d`在sed中的正则表达式中不起作用?

use*_*880 53 regex linux awk sed

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

sed -re 's/\d+//g'
Run Code Online (Sandbox Code Playgroud)

但这有效:

sed -re 's/[0-9]+//g'
Run Code Online (Sandbox Code Playgroud)

Kam*_*mil 39

\ d是一个不是正则表达式宏的开关.如果你想使用一些预定义的"常量"而不是[0-9]表达式,只需尝试运行此代码即可

s/[[:digit:]]+//g
Run Code Online (Sandbox Code Playgroud)

  • 但那么为什么`\ w`有效 (15认同)
  • 正如它所写的是sed文档"\ w匹配任何"单词"字符."单词"字符是任何字母或数字或下划线字符." 还有一个有趣的行"另外,这个版本的sed支持几个转义字符(其中一些是多字符)在脚本中插入不可打印的字符(\ a,\ c,\ d,\ o,\ r,\t,\ t\t,\ x).这些可能会导致为其他seds编写的脚本出现类似的问题." 有关更多信息,请访问http://www.gnu.org/software/sed/manual/sed.html (5认同)

izo*_*ica 22

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

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