2012-11-14 59 views
1

我试图使用GNU Grep(针对Win32目标编译的grep)为windows7创建一个.bat文件。我在使用|的表达式的语法时遇到了问题(或),因为DOS命令认为我正在使用它作为管道/重定向。这里有一个样本输入foo.txt的:从dos窗口(gnu grep)使用“或”grep命令行

aaa 
bbb 
ccc 
aaa bbb ccc 

所以我尝试一个简单的测试:

grep aaa foo.txt 

结果:

aaa 
aaa bbb ccc 

到目前为止,一切都很好。但我真的需要提取AAA或BBB,所以我用这个表达式: (AAA | BBB) 例如:

grep (aaa|bbb) 

给我:

'bbb)' is not recognized as an internal or external command, 
operable program or batch file. 

我已经试过各种报价,但还没有达到正确的组合。我需要保护来自DOS解释器的字符串,但它仍然对grep有用。我阅读手册页和网页文档,似乎没有什么东西符合我想要做的。

有谁知道如何做到这一点?谢谢。

回答

3

需要报价,并与\逃过管:

grep "aaa\|bbb" foo.txt 

$ cat foo.txt 
aaa 
bbb 
ccc 
aaa bbb ccc 

$ grep "aaa\|bbb" foo.txt 
aaa 
bbb 
aaa bbb ccc 
+0

看起来很不错,但没有奏效。消息是: 'bbb''不被识别为内部或外部命令, 可操作的程序或批处理文件。 –

+0

双引号怎么样? –

+0

啊,双引号工作! –