针对 file2 删除 file1 中的数据

Remove data in file1 against file2

这可能是 Whosebug 上给出的最糟糕的示例,但我的目的是针对 File2 删除 File1 中的所有内容。同时忽略大小写敏感性并匹配整行。例如 Cats@123:bob 将从 File2 中删除,因为单词 Cat 出现在 File1 中。因此,无论是否区分大小写,如果找到匹配的词,它应该删除整行。

输入(文件 1):

Cat
Dog
Horse
Wheel

主文件(文件 2)

Cats@123:bob
dog@1:truth
Horse-1:fairytale
Wheel:tremendous
Divination:maximus

期望的输出

Divination:maximus

如输出所示,只有 "Divination:maximus" 应该输出,因为在 File1 中没有找到匹配的词。我通常更喜欢使用 Sed 或 Awk,就像我使用 Cygwin 一样。但欢迎任何建议,我可以回答你的所有问题,谢谢。

这是我迄今为止尝试过的方法,但不幸的是它没有起作用,因为我的输出不正确。除此之外,还输出了错误的行。我相当缺乏经验,所以我不知道如何根据下面的语法进行开发,也许它与手头的工作完全无关。

grep -avf file1.txt file2.txt > output.txt

grep 命令可以为您做到这一点:

grep -v -i -f file1 file2
  • -f file1 告诉 grep 使用 file1
  • 中的模式
  • -i 标志表示不区分大小写
  • -v 标志意味着搜索不包含这些模式的行