Grep 的基本表达式不支持 d 吗?

这不会产生任何输出。为什么呢?

$ echo 'this 1 2 3' | grep '\d\+'

但这些确实是:

$ echo 'this 1 2 3' | grep '\s\+'
this 1 2 3


$ echo 'this 1 2 3' | grep '\w\+'
this 1 2 3
49255 次浏览

正如在 POSIX 指定的那样,grep使用 基本正则表达式基本正则表达式,但是 \d是与 Perl 兼容的正则表达式(PCRE)的一部分。

如果使用 GNUgrep,可以使用 -P选项,以允许使用 PCRE 正则表达式。否则,您可以使用 POSIX 指定的 [[:digit:]]字符类代替 \d

echo 1 | grep -P '\d'
# output: 1
echo 1 | grep '[[:digit:]]'
# output: 1

试试这个 $ echo 'this 1 2 3' | grep '[0-9]\+'