我有一个文件File1.txt,它有一些单词。我有另一个文件(名为blacklistwords.txt),我需要删除原始file1.txt中blacklistwords.txt中包含的所有单词。
File1.txt
----------
return 25
murder 28
another 54
stackoverflow 12
response 16
violence 32
blacklistwords.txt
------------------
violence
murder
crime
这是输出的样子:
Final output:
-------------
return 25
another 54
stackoverflow 12
response 16
答案 0 :(得分:2)
我试过这个并且有效:
grep -i -F -v -f blacklistwords.txt file1.txt
答案 1 :(得分:0)
您的解决方案基本上是正确的。
我要注意的是,您没有要求进行大小写不匹配,并且通过-i
开关添加它会对性能造成相当大的损失,至少对于unicode环境而言,所以您可能想要删除它它并不是真的需要。
答案 2 :(得分:0)
在针对我自己的案例分解user965692的解决方案时,我发现需要另一个选项-w
,它只搜索整个单词。
完全分解:
-i
告诉grep忽略大小写-F
告诉grep期望一个固定字符串列表-w
搜索整个单词(例如,如果“flow”是一个停用词,就不会匹配“溢出”-v
反转匹配(即只打印字符串列表中不的内容-f blacklistwords.txt
从给定文件的行中获取模式因此,要删除所有列入黑名单的单词:
grep -i -F -w -v -f blacklistwords.txt file1.txt