从另一个文件中删除一个文件中的停用词

时间:2013-07-17 06:55:28

标签: bash

我有一个文件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

3 个答案:

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