2012-07-24 58 views
1

我有一個代理過濾器的大域列表文件。在另一個文件中,我有一些例外,我想從過濾文件中刪除所有excpetions文件的行。某些「sed」操作可能嗎?Bash shell從文本文件中刪除行

謝謝。

+2

請後兩個文件中的某些提取物。 – 2012-07-24 07:33:02

回答

4

對於此選項,您通常可以使用grep-v-f選項。實際上,您可能還想使用fgrep-F標誌以確保將字符串視爲固定字符串而不是正則表達式。沒有這個,例如,下面infile文件的第一行將被刪除,儘管實際上並沒有匹配固定字符串。

-v反轉這種匹配行被丟棄而不是保留的意義,並且-f將從文件而不是命令行獲取模式。

例如:

pax> cat infile 
http://wwwxdodgy.com/rest-of-url 
http://www.dodgy.com/rest-of-url 
ftp://this/one/is/good 
https://www.bad.org/rest-of-url 

pax> cat exceptions 
http://www.dodgy.com 
https://www.bad.org 

pax> fgrep -v -f exceptions infile 
ftp://this/one/is/good 
2

更容易使用grep做到這一點:

grep -v -x -F -f /path/to/exclude /path/to/file