2015-03-19 87 views
0

我試圖做這樣的事情在我的OSX終端這是爲什麼grep的組失敗

> grep -i "((\D*)ful)" ./Myfile.rtf 

然而,上述語句失敗當我做這個

> grep -i "\D*ful" ./Myfile.rtf 

它傳遞 - 確實grep的有正則表達式組的問題

回答

2

由於基本grep使用BRE,因此您需要使用\(..\)來捕獲組。

grep -i "\(\(\D*\)ful\)" ./Myfile.rtf 
2

發生此類事情時最可能發生的問題是特殊字符是否特殊。在這種情況下,我認爲括號並不特殊,除非你引用它們,所以:

> grep -i "\(\(\D*\)ful\)" ./Myfile.rtf 

可能會更好。

[正則表達式的一個刺激是已經發展到它們如何被寫入的變化...]