我試圖用\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