1

我有一个用于代理过滤器的大域列表文件。在另一个文件中,我有一些例外情况,我想从过滤器文件中删除所有异常文件行。是否可以进行一些“sed”操作?

谢谢。

4

2 回答 2

4

您通常可以为此使用grep-v选项-f。事实上,您可能还想使用fgrepor-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
于 2012-07-24T07:35:16.437 回答
2

使用 grep 更容易做到这一点:

grep -v -x -F -f /path/to/exclude /path/to/file 
于 2012-07-24T07:35:29.617 回答