微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐