2012-06-17 54 views
0

我正試圖在一個包含大量html文件的目錄中進行搜索,以查找包含同一行上確切值的文件。這應該工作:如何在文件列表中搜索同一行上存在的多個值?

grep -iwc 'word1' -sl | xargs grep -iwc 'word2' -s 

但是,這隻能在一個文件一次。我想是這樣的:

find . -iname '*html' | xargs grep -iwc 'word1' -sl | xargs grep -iwc 'word2' -s 

,但似乎顯示包含任何兩個數值的文件,所以即使那些沒有在同一行。

的輸出只能是文件名和事件的數量等:

file.html:2 

如果能夠組合這些2裏grep?或另一種方式來做這個搜索?

+0

您是否符合特定的搜索字詞,或者您只是在尋找相應的匹配行? – 2012-06-17 22:53:39

+0

我正在尋找與位於同一行上的word1和word2(或string2)匹配的所有文件,並輸出類似於file.html:x的文件,其中x是出現次數。這似乎是由phs的答案訣竅:) – Sempiterna

回答

0

擴展正則表達式可能會有所幫助。也許這樣的事情?

find . -iname '*html' | xargs egrep -iwl '(word1.*word2|word2.*word1)' 

既然你只有你要找的兩個詞,這不是太硬,列出了所有命令他們的方式。

+0

這似乎工作:)如果使用一個字和一個字符串,這也會工作,對不對?如word1和'這串文字'在同一行上,但沒有引號(因爲引號不返回任何內容)。 – Sempiterna

+0

是的,只要它可以形成一個正則表達式。字母和空格可以不經過特殊處理。 – phs

+0

感謝您的回答。你不會相信我一直在尋找這個。這也可以擴展到搜索word1 AND(word2或word3)嗎? – Sempiterna

相關問題