我有一个用于代理过滤器的大域列表文件。在另一个文件中,我有一些例外情况,我想从过滤器文件中删除所有异常文件行。是否可以进行一些“sed”操作?
谢谢。
您通常可以为此使用grep
和-v
选项-f
。事实上,您可能还想使用fgrep
or-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
使用 grep 更容易做到这一点:
grep -v -x -F -f /path/to/exclude /path/to/file