2010-10-26 22 views
1

假設我們有兩個文件。將具有多種模式的文件傳遞給grep

match.txt:包含模式的文件來匹配:

fed ghi 
tsr qpo 

的data.txt:包含文本行的文件:

abc fed ghi jkl 
mno pqr stu vwx 
zyx wvu tsr qpo 

現在,我要發出一個grep命令,應該返回第一行和第三行從data.txt

abc fed ghi jkl 
zyx wvu tsr qpo 

...因爲這兩行中的每一行匹配match.txt中的一個模式。

我曾嘗試:

grep -F -f match.txt data.txt 

但不返回任何結果。

grep的信息:GNU grep 2.6.3(Cygwin的)
OS信息:Windows 2008 R2

更新:修復是使用這個命令:tr -d "\r" <match.txt | grep -F -f - text.txt

看來,grep的不正確地尊重窗口行尾( CR/LF)通過-f標誌顯示給它的匹配文件。

+0

更新cygwin grep到最新版本(從2.5.4到2.6.3),問題依然存在。 – 2010-10-26 14:38:07

回答

2

我剛剛試過你給的例子,它按預期工作。

[~] $ grep -F -f match.txt data.txt 
abc fed ghi jkl 
zyx wvu tsr qpo 

您能提供更多信息嗎?你在運行什麼操作系統?什麼版本的grep?你的輸入文件包含哪些行尾?

+0

這個問題附有一個窗口標籤。我已經用完整版本信息更新了原始問題。 – 2010-10-26 14:30:19

+0

我看到了標籤。這是Cygwin grep還是SFU grep? – JohnCC 2010-10-26 14:32:19

+0

Cygwin - 問題更新... – 2010-10-26 14:33:29