使用grep从停用词文件中过滤掉单词
问题描述:
我想将grep和停用词文件一起使用,以从另一个文件中过滤掉常见的英语单词。文件“somefile”每行包含一个字。使用grep从停用词文件中过滤掉单词
cat somefile | grep -v -f stopwords
这种方法的问题是:它检查在停用词一个词是否在somefile发生,但我想如果somefile一个词停用词出现相反的情况,即检查。
如何做到这一点?
例
somefile包含以下内容:
hello
o
orange
禁用词包含以下内容:
o
我想从somefile过滤出个 “o”,而不是你好,橙子。
答
我想过这个问题多一些,并找到了解决办法...
使用-w
开关grep
匹配全字:
grep -v -w -f stopwords somefile
答
假设你有停用词文件/ tmp /词:
in
the
您可以通过它创建SED方案:
sed 's|^|s/\\<|; s|$|\\>/[CENSORED]/g;|' /tmp/words > /tmp/words.sed
这样你会得到/tmp/words.sed:
s/\<in\>/[CENSORED]/g;
s/\<the\>/[CENSORED]/g;
,然后用它来检查任何文本文件:
sed -e -f /tmp/words.sed /input/file/to/filter.txt > /censored/output.txt
的-e
是需要使用sed明白延长正则表达式需要用于识别。 当然,如果您愿意,您可以将[censored]
更改为任何其他字符串或空字符串。
该解决方案将处理许多单词以及每行文件中的一个单词。
或'grep -v -w -f stopwords somefile'避免了'cat'命令 – Matthias
我根据你的清理建议改变了答案@Matthias –