这不会产生任何输出。怎么样?
$ 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
答案 0 :(得分:156)
grep
的默认模式是(iirc)POSIX正则表达式,\d
是pcre。你可以将-P
传递给gnu grep,用于类似perl的regexp,也可以使用[[:digit:]]
代替\d
。
daenyth@Bragi ~ $ echo 1 | grep -P '\d'
1
daenyth@Bragi ~ $ echo 1 | grep '[[:digit:]]'
1
答案 1 :(得分:15)
试试这个$ echo 'this 1 2 3' | grep '[0-9]\+'