2010-07-22 35 views
3

我有一個正則表達式的大文件,每行一個。我想反對grep另一個多行文件對任何出現在第一個文件中的正則表達式。這樣的事情:使用正則表達式列表grep一個文件

grep -v fileWithManyRegularExpressions fileThatMightMatchSomeRegularExpressions 

是否有一個優雅的方法來執行循環每一個正則表達式?

回答

11
grep -v -f regexes.txt content.txt 
+1

只記得-v是在任何匹配後應用的,所以有效的是否定正則表達式的聯合,而不是正則表達式的否定的聯合。 – 2010-07-22 15:50:31

+0

所以'grep -v -f'對應於「沒有正則表達式匹配內容」,而'grep -f'是「一個或多個正則表達式匹配內容」。這些看起來似乎是目前最常見的用例。消極聯盟意味着什麼? – 2013-06-22 04:25:16

+0

@StevenLu否定的聯合會是「一個或多個正則表達式與內容不匹配」。這相當於「所有這些正則表達式匹配內容」的否定。請參閱https://en.wikipedia.org/wiki/De_Morgan%27s_laws – shiri 2018-01-02 09:56:36

2

至少與Gnu grep,你可以使用--file=<filename>,一切都會好的。