2012-07-24 60 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