根据文件中的模式从输出中排除行

时间:2013-12-06 06:42:13

标签: bash shell unix grep pattern-matching

我在文本文件中有几个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,但实际上并没有从输出中排除它们。我做错了什么?

1 个答案:

答案 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.)