\ d不支持grep的基本expression式吗?

这不会产生任何输出。 怎么来的?

$ 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 

grep的默认模式是(iirc)POSIX正则expression式,而\d是pcre。 您可以将-P为gnu grep,对于类似perl的正则expression式,或者使用[[:digit:]]而不是\d

 daenyth@Bragi ~ $ echo 1 | grep -P '\d' 1 daenyth@Bragi ~ $ echo 1 | grep '[[:digit:]]' 1 

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