Unix/Linux 环境下统计词频
在 Unix/Linux 环境下统计词频,有纯命令行工具组合和**脚本语言(Python/Perl)**两种主流方案,以下是最常用的实现方式及深度分析。
一、纯命令行方案(高效轻量)
利用 tr、sort、uniq、awk 等核心工具组合,无需额外依赖,适合处理文本文件或管道输入。
1. 基础版(区分大小写、包含标点)
# 统计文件中每个单词的出现次数(默认按空格/制表符分割)
cat input.txt | tr ' ' '\n' | sort | uniq -c | sort -nr
2. 进阶版(忽略大小写、过滤标点)
# 处理规则:
# 1. 统一转为小写
# 2. 移除所有标点符号
# 3. 过滤空行
# 4. 按词频降序排序
cat input.txt | tr '[:upper:]' '[:lower:]' | tr -d '[:punct:]' | tr ' ' '\n' | grep -v '^$' | sort | uniq -c | sort -nr
各工具作用说明
| 工具 | 作用 |
|---|---|
tr | 字符转换:大小写转换、替换空格为换行、删除标点 |
grep -v | 反向匹配,过滤空行 |
sort | 对单词排序(为 uniq 去重做准备) |
uniq -c | 统计连续重复行的次数(必须先排序) |
sort -nr | 按数字降序排序(-n 按数值排序,-r 反向) |


