在 Linux 系统中,可以使用 grep
、tr
和 wc
命令组合来实现对文本文件中单词的计数,同时忽略停用词。假设你有一个包含停用词的文本文件 stopwords.txt
,内容如下:
the
and
is
in
it
现在你想统计另一个文本文件 input.txt
中的单词数量,同时忽略 stopwords.txt
中的停用词。你可以使用以下命令:
grep -oE '\w+' input.txt | tr ' ' '\n' | grep -vE "($(cat stopwords.txt | tr ' ' '|'))" | wc -l
解释:
grep -oE '\w+' input.txt
:从 input.txt
文件中提取所有单词(连续的字母、数字和下划线)。tr ' ' '\n'
:将单词之间的空格替换为换行符,使每个单词单独一行。grep -vE "($(cat stopwords.txt | tr ' ' '|'))"
:使用扩展正则表达式过滤掉 stopwords.txt
中的停用词。wc -l
:计算过滤后的行数,即单词数量。注意:这个命令假设停用词文件中的单词大小写敏感。如果你想忽略大小写,可以将 grep -vE
部分改为 grep -i -vE
,或者在读取停用词文件时将所有单词转换为小写(或大写):cat stopwords.txt | tr ' ' '| | tr '[:upper:]' '[:lower:]'
。