我试图用\s
来指定,而空格在grep
正则表达式,但似乎grep无法识别它。 grep -E
或egrep
也没有与它一起工作。在grep中支持正则表达式转义序列
这里是我的考验:
$ echo ' foo' | grep '^ *foo'
foo
$ echo ' foo' | grep '^\s*foo' <-- **No Output**
$ echo ' foo' | grep -E '^\s*foo' <-- **No Output**
$ echo ' foo' | egrep '^\s*foo' <-- **No Output**
$ echo ' foo' | grep '^[[:space:]]*foo'
foo
我也注意到,它承认\w
但不\d
!
阙1.是否有可能使grep
识别\s
?
阙2.我在哪里可以找到支持grep
的正则表达式转义序列的列表?
OS:RHEL5
壳牌:尝试sh
,bash
,tcsh
$ grep --version
grep (GNU grep) 2.5.1
编辑
我试着用grep -P
作为答案的建议,但遗憾的是它没有牛逼的工作对我的系统抛出以下错误:
$ echo ' foo' | grep -P '^\s*foo'
grep: The -P option is not supported <-- **ERROR**
仅供参考......在Perl的grep()接受\ S。我已经在PERL中尝试了下面的程序,它工作正常。'我的@Arr =(“Test”,“Test”); @Arr = grep {$ _ =〜/^\ s + Test /} @Arr; print“@Arr”; '输出:“测试” – Anand
@Anand是的。我注意到PERL中的grep工作正常。我的意图是让它在linux shell上工作 – jkshah