跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
编程语言算法

Unix/Linux 环境下统计词频:命令行工具与 Python 脚本方案

在 Unix/Linux 环境下统计文本词频的两种主流方案。第一种是纯命令行工具组合,利用 tr、sort、uniq 等核心工具实现高效轻量处理;第二种是 Python 脚本方案,适合需要复杂规则如停用词过滤的场景。文章对比了两者在性能、灵活性及学习成本上的差异,并提供了基础与进阶的代码示例。

咸鱼开飞机发布于 2026/3/24更新于 2026/9/860 浏览
Unix/Linux 环境下统计词频:命令行工具与 Python 脚本方案

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 反向)

二、Python 脚本方案(灵活可控)

适合需要复杂规则(如停用词过滤、词干提取)或集成到更大系统的场景。

1. 基础统计脚本

import sys
from collections import Counter
import string

def count_word_frequency(file_path):
    # 读取文件内容
    with open(file_path, 'r', encoding='utf-8') as f:
        text = f.read()
    
    # 预处理:转小写、移除标点
    text = text.lower()
    translator = str.maketrans('', '', string.punctuation)
    text = text.translate(translator)
    
    # 分割单词并统计
    words = text.split()
    word_counts = Counter(words)
    
    # 按词频降序输出
    for word, count in sorted(word_counts.items(), key=lambda x: x[1], reverse=True):
        print(f"{count:4d} {word}")

if __name__ == "__main__":
    if len(sys.argv) != 2:
        print("用法:python word_count.py <输入文件路径>")
        sys.exit(1)
    count_word_frequency(sys.argv[1])

2. 进阶版(过滤停用词)

# 新增停用词过滤功能(需提前定义停用词列表)
STOP_WORDS = {'the', 'and', 'of', 'a', 'to', 'in', 'is', 'it'}

def count_word_frequency(file_path):
    # ...(省略前面的预处理代码)
    # 过滤停用词
    words = [word for word in text.split() if word not in STOP_WORDS]
    word_counts = Counter(words)
    # ...(省略输出代码)

三、方案对比

维度命令行方案Python 脚本方案
性能极快(C 语言实现工具)适中(解释型语言)
灵活性较低(依赖工具组合)极高(支持复杂逻辑)
学习成本需掌握多个工具参数适合有 Python 基础的用户
扩展性有限(难以处理复杂规则)无限(可集成 NLP 库)

安全提示:处理未知来源的文本时,建议先通过 file 命令检查文件类型,避免处理二进制文件导致异常。

目录

  1. Unix/Linux 环境下统计词频
  2. 一、纯命令行方案(高效轻量)
  3. 1. 基础版(区分大小写、包含标点)
  4. 统计文件中每个单词的出现次数(默认按空格/制表符分割)
  5. 2. 进阶版(忽略大小写、过滤标点)
  6. 处理规则:
  7. 1. 统一转为小写
  8. 2. 移除所有标点符号
  9. 3. 过滤空行
  10. 4. 按词频降序排序
  11. 各工具作用说明
  12. 二、Python 脚本方案(灵活可控)
  13. 1. 基础统计脚本
  14. 2. 进阶版(过滤停用词)
  15. 新增停用词过滤功能(需提前定义停用词列表)
  16. 三、方案对比

更多推荐文章

查看全部
  • AIGC 微电影《编钟》制作复盘
  • 具身智能机器人协同与全模态 AI 模型技术架构解析
  • MySQL 数据类型详解:选型要点与避坑指南
  • 鸿蒙系统安装配置OpenClaw工具指南
  • OpenHarmony Flutter 开发:使用 sanitize_html 净化 HTML 防止 XSS
  • Stack-Chan 机器人入门:基于 JavaScript 的 M5Stack 智能伙伴
  • Stable Diffusion 3.5 FP8 镜像部署与商业授权说明
  • Qwen3.5 核心特性与性能详解:原生多模态开源大模型
  • LangChain BaseChatMemory 详解与子类实战
  • 黑马点评项目实战:Redis 缓存与 RabbitMQ 异步秒杀优化
  • 使用 GitHub Desktop 将本地代码上传至远程仓库教程
  • 2025 年十大高效 AI 工具推荐,提升工作与学习效率
  • 【论文阅读 | CVPR 2024 | Fusion-Mamba :用于跨模态目标检测】
  • Linux 进程间通信进阶:消息队列与信号量详解
  • Git 版本控制常用命令与场景指南
  • Gaussian Grouping: 实现 3D 场景的任意分割与编辑
  • 基于 Python OpenCV 的停车场车位检测与空余计数系统
  • AI 数据标注平台的选型与实践:效率提升背后的技术逻辑
  • HTML 标签详解:网页结构、文本、表单与常用标签指南
  • JavaScript 基础入门与核心语法详解

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online