当前位置: 首页 > news >正文

linux统计文本文件中行数、单词数和字节数的命令行工具wc介绍

在这篇文章中,将为您详细介绍一下 Linux 中非常实用的小工具——wc 命令。

wc 命令简介

wc 是 “word count”(单词计数)的缩写。顾名思义,它是一个用来统计文本文件中行数、单词数和字节数的命令行工具。尽管它的名字是“单词计数”,但它的功能远不止于此,尤其是在与其他命令通过管道(|)结合使用时,wc 会变得异常强大。

基本语法

wc 的基本命令格式非常简单:

wc [选项] [文件名...]
  • [选项]: 用来指定你想要统计的具体内容(例如,只统计行数)。
  • [文件名...]: 你想要统计的一个或多个文件。如果省略文件名,wc 会从标准输入(standard input)中读取数据,这使得它可以和管道符 | 完美配合。

常用选项

wc 最核心的就是它的几个选项,让你能够精确控制输出内容:

选项长选项描述
-l--lines只统计行数 (Line count)。一行由一个换行符 \n 定义。
-w--words只统计单词数 (Word count)。单词是由空格、制表符或换行符分隔的字符序列。
-c--bytes只统计字节数 (Byte count)。
-m--chars只统计字符数 (Character count)。这和 -c 很像,但在处理多字节字符(如中文、日文等)时有区别。
-L--max-line-length统计文件中最长一行的长度(字符数)。

使用示例

为了更好地演示,我们先创建一个示例文件 poem.txt

# 使用 cat 和 EOF 来创建一个多行文件
cat << EOF > poem.txt
Hello world,
Linux is powerful.This is the end.
EOF

这个文件包含 4 行(其中一行是空行)、10 个单词。

1. 默认用法(无任何选项)

如果你直接对一个文件使用 wc,它会按顺序输出 行数、单词数、字节数 和文件名。

$ wc poem.txt4  10  49 poem.txt

输出解读:

  • 4: 文件有 4 行。
  • 10: 文件有 10 个单词。
  • 49: 文件包含 49 个字节。
  • poem.txt: 文件名。
2. 使用特定选项

通常我们只关心某一个指标,这时选项就派上用场了。

  • 只统计行数 (-l)

    $ wc -l poem.txt
    4 poem.txt
    
  • 只统计单词数 (-w)

    $ wc -w poem.txt
    10 poem.txt
    
  • 只统计字节数 (-c)

    $ wc -c poem.txt
    49 poem.txt
    
  • 统计最长行的长度 (-L)

    $ wc -L poem.txt
    18 poem.txt 
    

    (“Linux is powerful.” 这一行最长,包含18个字符和一个换行符,但 -L 只计算可见字符数)

3. 统计多个文件

wc 可以同时处理多个文件。它会分别列出每个文件的统计信息,并在最后给出一个所有文件的总计(total)。

# 复制一份 poem.txt 为 poem2.txt
cp poem.txt poem2.txt$ wc poem.txt poem2.txt4  10  49 poem.txt4  10  49 poem2.txt8  20  98 total
4. 从标准输入读取(与管道 | 结合)

这是 wc 最强大的用法之一。它可以接收其他命令的输出,并对其进行统计。当从标准输入读取时,wc 不会显示文件名。

  • 统计当前目录下的文件和目录总数

    $ ls -1 | wc -l
    

    ls -1 每行列出一个文件名,wc -l 统计这些行数,从而得到文件和目录的总数。

  • 统计 ll 命令的输出行数(你最初的问题)

    $ ll | wc -l
    

    这会统计 ls -alF 输出的所有行,包括 “total” 行和 . ..

  • 统计系统中有多少个用户
    系统的用户信息存储在 /etc/passwd 文件中,每行一个用户。

    $ cat /etc/passwd | wc -l
    # 更简洁的写法
    $ wc -l /etc/passwd
    
  • 统计 history 命令记录了多少条历史命令

    $ history | wc -l
    

-c (bytes) vs -m (chars) 的区别

这个区别在处理非 ASCII 字符(如中文)时非常重要。

  • -c 统计字节(bytes)。
  • -m 统计字符(characters)。

在 UTF-8 编码下,一个英文字母通常占 1 个字节,而一个中文字符通常占 3 个字节。

示例:
我们创建一个包含中文的文件 chinese.txt

$ echo "你好世界" > chinese.txt

现在我们来对比一下:

  • 统计字节数:

    $ wc -c chinese.txt
    13 chinese.txt
    

    为什么是13?因为 “你好世界” (4个汉字) 在 UTF-8 中占 4 * 3 = 12 个字节,再加上一个换行符 \n 占 1 个字节,总共 13 个字节。

  • 统计字符数:

    $ wc -m chinese.txt
    5 chinese.txt
    

    为什么是5?因为 “你好世界” 是 4 个字符,再加上换行符 \n 这 1 个字符,总共 5 个字符。

总结

wc 是一个轻量、高效且功能专一的工具,完美体现了 Unix/Linux 的 “做一件事并把它做好” 的设计哲学。当你需要对文本数据进行快速计数时,无论是来自文件还是来自其他命令的输出,wc 都是你的首选工具。掌握它与管道的结合使用,能极大地提升你在命令行下的工作效率。

http://www.dtcms.com/a/320942.html

相关文章:

  • 深入解析Linux信号处理机制
  • Linux软硬链接与动静态库
  • MQTT与服务器通讯
  • LINUX88 变量:命令定义;普通数组定义(复);declare -i /-x
  • 接口返回504 Gateway Time-out 错误,这意味着请求在网关或代理服务器等待上游服务器响应时超时。以下是可能的原因和排查建议:
  • Day01 项目概述,环境搭建
  • 「iOS」————NSOperation
  • Java对象与JSON互转
  • iOS混淆工具有哪些?跨平台 App 混淆与保护的实用方案
  • Android初学者系统开发学习路线参考
  • 构建高可用架构:ZDNS GSLB 在多数据中心场景下的应用与 F5 替换实践
  • [element-plus] flex布局 el-table表格设置百分比高度失效
  • 项目实战三:DPDK
  • el-image-viewer组件在el-table使用时层级异常问题解决
  • 无人机如何靠陀螺仪保持稳定飞行?
  • 无人机教育热潮下,超优航空如何为青少年插上科技翅膀?
  • 协同进化:AIGC、Agent和MCP如何相互促进共同发展
  • 使用Python提取PDF大纲(书签)完整指南
  • Java基础-模拟多线程安全问题场景
  • Track Any Anomalous Object: A Granular Video Anomaly Detection Pipeline
  • tmi8150b设置电机速度有两个地方,x轴电机,y轴电机,具体如下
  • 13. 搜索引擎-ElasticSearch
  • (已解决)Mac 终端上配置代理
  • 机器学习支持向量机(SVM)
  • C++使用FFmpeg进行视频推流
  • conda或mamba install 相关软件报错
  • GraphRAG 入门教程:从原理到实战
  • 【概率论】均匀分布的伪随机数
  • 代码随想录Day43:动态规划(最长递增子序列、最长连续递增序列、最长重复子数组)
  • Linux网络--1、网络基础