grep的基本表达式不支持\?

时间:2011-08-01 16:04:47

标签: linux grep

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

$ 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

2 个答案:

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