我在文本文件中有几个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地址 NOT 存在于“pattern.txt”中。所需的输出如下,
server1,L.M.N.O,user1
server3,P.Q.R.S,user3
我尝试使用此cat target.txt | grep -f pattern.txt
。但这并没有完成工作:它只是突出显示我想要排除的IP,但实际上并没有从输出中排除它们。我做错了什么?
答案 0 :(得分:2)
你可以说:
grep -F -v -f pattern.txt target.txt
提供-F
会将模式解释为固定字符串,因此IP地址中的.
与任何任意字符都不匹配。
-F, --fixed-strings
Interpret PATTERN as a list of fixed strings, separated by newlines, any of which is to be matched. (-F is specified by POSIX.)