2012-11-14 75 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

啊,雙引號工作! –