2012-06-18 105 views
1

我在Windows 7命令提示符下使用GNU grep。正則表達式[^)]無法匹配雙引號

我有一個文件jsutfstr.txt,其內容是這樣的:

some lines 
HELLO("abc",adf) 
HELLO("def", sd) 
some lines 
some lines 
some lines 

而且我希望到grep的HELLO(..)模式。在Windows命令提示符中,我使用了這些:

C:\bin>Egrep  HELLO\(\"[^)]+\) jsutfstr.txt 
HELLO("abc",adf) 
HELLO("def", sd) 

C:\bin>Egrep  HELLO\([^)]+\) jsutfstr.txt 

因此,第二個模式不產生任何結果。我不明白爲什麼我必須指明\「明確。是不是,[^]]匹配不等於包含雙引號的所有不等於

回答

3

問題是,您運行到shell第一和^解析線是cmd轉義字符。所以傳遞到grep在第二種情況下,行是

Egrep  HELLO\([)]+\) jsutfstr.txt 

,而在第一種情況下"開始報價參數,其中cmd不會考慮。

您可以引用完整的參數來避免:

Egrep "HELLO\([^)]+\)" jsutfstr.txt 
+0

Thx,這是非常有幫助的。 Windows命令提示符真的很麻煩。那麼,我應該在命令提示符下使用什麼來獲得所需的結果? – JavaMan

相關問題