Windows
將具有多種模式的文件傳遞給 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)
作業系統資訊:Windows 2008 R2
更新:似乎 grep 被搜尋模式行中的空格弄糊塗了,但是使用 -F 標誌,它應該將match.txt中的每一行視為單獨的匹配模式。
解決方法如下:
使用命令:
tr -d "\r" <match.txt | grep -F -f - text.txt
對於通過 -f 標誌呈現給它的匹配文件,似乎
grep
沒有正確尊重 Windows 行尾 (CR/LF)。該tr
命令可用於從匹配文件中去除輸入,並且 - 特殊標誌可與 一起使用grep
,以強制它從標準輸入中讀取匹配文件。
由於它適用於 Unix,也許您需要更高版本的 grep?
>cat d abc fed ghi jkl mno pqr stu vwx zyx wvu tsr qpo >cat p fed ghi tsr qpo >grep -F -f p d abc fed ghi jkl zyx wvu tsr qpo
如果您將模式更改為
fed\040ghi tsr\040qpo