针对file2删除file1中的数据

时间:2019-07-20 03:43:42

标签: unix awk sed cygwin

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

输入(文件1):

Cat
Dog
Horse
Wheel

MainFile(File2)

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

所需的输出

Divination:maximus

如输出所示,仅应输出“ Divination:maximus”,因为在File1中找不到匹配的单词。我更喜欢像使用Cygwin一样一般使用Sed或Awk。但是任何建议都欢迎,我可以回答您可能遇到的所有问题,谢谢。

这是我到目前为止已经尝试过的方法,但是由于我的输出不正确,因此它不能正常工作。除此之外,仅输出错误的行。我相当缺乏经验,所以我不知道如何在下面的语法上进行开发,也许这与手头的工作完全无关。

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

1 个答案:

答案 0 :(得分:2)

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

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