Bash,Linux,需要根据来自另一个文件的匹配内容从一个文件中删除行

当另一个文件中存在同一行时,有很多关于如何删除一个文件中的行的示例.我已经通读了它们,如果整行匹配,它们都会删除.例如: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.

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...