【发布时间】:2013-12-06 06:42:12
【问题描述】:
我在一个文本文件中有几个 IP 地址。我有另一个文件,其中每一行都包含一个 IP 以及一些其他数据。以下示例,
pattern.txt(要排除的 IP):
A.B.C.D
E.F.G.H
I.J.K.L
target.txt(主列表):
server1,L.M.N.O,user1
server2,A,B.C.D,user2
server3,P.Q.R.S,user3
现在我需要创建一个规则(最好是单行),它只列出“target.txt”中的那些行,其 IP 地址不出现在“pattern.txt”中。所需的输出如下,
server1,L.M.N.O,user1
server3,P.Q.R.S,user3
我尝试使用这个cat target.txt | grep -f pattern.txt。虽然这并没有完成工作:它只是突出显示我想要排除的 IP,但实际上并没有从输出中排除它们。我做错了什么?
【问题讨论】:
-
也许可以尝试使用 -v 开关和 grep 来排除字符串。另请注意,您不需要 cat,简单的 grep -v -f pattern.txt target.txt 应该可以工作。
-
@tvm 是的,我也试过这个 -
cat target.txt | grep -vf pattern.txt,但它只会产生一个空白输出:/
标签: bash shell unix grep pattern-matching