2012-06-18 63 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

相关问题