当另一个文件中存在同一行时,有很多关于如何删除一个文件中的行的示例.我已经通读了它们,如果整行匹配,它们都会删除.例如:grep -vxF -f file1 file2
我所拥有的略有不同.我有一个来自我的网站和我的客户网站的URL列表.当域与另一个文件中的域匹配时,我想从该文件中删除行.
http://www.site1.com/some/path
http://www.site2.com/some/path
http://www.site3.com/some/path
http://www.site4.com/some/path
第二个文件可能是:
site2.com
www.site4.com
我希望输出为:
http://www.site1.com/some/path
http://www.site3.com/some/path
解决方法:
你有太多的grep标志.具体来说:-x将阻止您获得所需的结果.
假设file1具有模式,而file2具有URL,只需使用:
grep -v -f file1 file2
-x标志将阻止您获得所需的结果:使用-x表示:仅匹配整行,即仅在行完全匹配时才匹配行,例如: site2.com.
从男人grep:
-x, –line-regexp
Select only those matches that exactly match the whole line.