1

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

3 回答 3

2

我试过了,它奏效了:

grep -i -F -v -f blacklistwords.txt file1.txt
于 2013-07-17T17:24:36.923 回答
0

您的解决方案基本上是正确的。

请注意,您并没有要求不区分大小写的匹配,并且通过-i开关添加它会带来相当大的性能损失,至少对于 unicode 环境而言,因此您可能希望在不需要时将其剥离。

于 2013-10-30T23:49:18.953 回答
0

在为我自己的案例分解 user965692 的解决方案时,我发现需要另一个选项 ,-w它只搜索整个单词。

要完全分解它:

  • -i告诉 grep 忽略大小写
  • -F告诉 grep 期待一个固定字符串的列表
  • -w搜索整个单词(即,如果“flow”是停用词,它将不匹配“overflow”
  • -v反转匹配项(即,仅打印不在字符串列表中的内容
  • -f blacklistwords.txt从给定文件的行中获取模式

因此,要删除所有列入黑名单的单词:

grep -i -F -w -v -f blacklistwords.txt file1.txt

于 2015-11-10T18:45:27.813 回答