\ 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]\+'