问候,
我有一个文件 - 或多或少是一个灰名单文件。我需要将其中的40到50个值与白名单文件进行比较 - 并从白名单文件中存在的灰名单中删除任何值。
现在我正在获取每个灰名单值并将其与白名单文件中的每个值(具有1-2000个值)进行比较,如果找到匹配项,则将其从灰名单中删除。然后循环到下一个灰名单值。
似乎非常低效 - 但我不知道从哪里开始做我正在寻找的事情。
有什么想法吗?
非常感谢。
答案 0 :(得分:3)
您可以使用grep -f
。
grep -F -v -f whitelist.txt greylist.txt
greylist.txt
中不在whitelist.txt
的值在stdout上,如果需要,可以将其重定向到文件。
grep的选项执行以下操作:
-F
:将PATTERN解释为固定字符串列表。 (即不要使用正则表达式)-v
:反转匹配感,选择不匹配的行。-f
:从FILE获取模式,每行一个。请参阅man grep
答案 1 :(得分:1)
你可以对这两个文件进行排序吗?这样做可以让你提前退出搜索,加快速度 - 特别是如果你可以对两者进行排序,在这种情况下你只需要遍历每个文件一次(因为你只需要在当前的任何一个文件中前进)在较低的价值)。