如何不区分大小写地统计纯文本文件中的唯一词汇?

2 投票
8 回答
5055 浏览
提问于 2025-04-15 11:51

这个程序可以用任何一种高级语言来写,只要这种语言在一般的类Unix系统上能用就行,比如Python、Perl、awk,或者一些标准的Unix工具(像sort、uniq等)。希望这个程序能快速计算出一个2MB文本文件中有多少个不同的词。

我只是需要这个程序来做个快速的检查,所以不需要特别复杂或者设计得很完美。

记得要忽略大小写哦。

非常感谢大家。

附带说明:如果你用Python,请不要用只支持3.x版本的代码。因为我用的系统只支持2.4.4版本。

8 个回答

5

使用bash/UNIX命令:

sed -e 's/[[:space:]]\+/\n/g' $FILE | sort -fu | wc -l
6

在Perl语言中:

my %words; 
while (<>) { 
    map { $words{lc $_} = 1 } split /\s/); 
} 
print scalar keys %words, "\n";
4

在Python 2.4(可能在更早的版本也能用):

#! /usr/bin/python2.4
import sys
h = set()
for line in sys.stdin.xreadlines():
  for term in line.split():
    h.add(term)
print len(h)

在Perl语言中:

$ perl -ne 'for (split(" ", $_)) { $H{$_} = 1 } END { print scalar(keys%H), "\n" }' <file.txt

撰写回答