如何基于文件内容使用grep -v/--invert-match进行反向匹配?
排除指定文件内容的bash命令写法
你之前写的grep -v FILE用法不对,要从命令输出里排除掉指定文件的所有行,得用grep的-f参数加载排除规则文件,再配合-v反向匹配,正确命令如下:
diff ... | awk ... | xargs ... | grep -v -f FILE
参数说明
-f FILE:让grep从FILE文件中读取每一行作为匹配规则-v:反转匹配结果,保留未被FILE内容匹配到的行
效果验证
当前命令输出:
IP1 HostX1
IP2 HostY2
IP3 HostY3
IP4 HostY4
IP5 HostY5
IP6 HostY6
IP7 HostX7
指定排除的FILE内容:
IP2 HostY2
IP3 HostY3
IP4 HostY4
IP5 HostY5
IP6 HostY6
执行修正后的命令后,就能得到期望输出:
IP1 HostX1
IP7 HostX7
如果FILE里的行包含正则特殊字符(比如.、*),可以再加-F参数,把所有规则当作纯文本匹配,避免正则解析干扰:
diff ... | awk ... | xargs ... | grep -v -F -f FILE
内容的提问来源于stack exchange,提问作者N. J
相关产品推荐
相关产品推荐

