前言

在日常应用中,统计文件内容是一种常见的需求,可以通过 wc 命令来实现

Wc

wc file

统计文件,显示行数、单词数、字节数,带文件名

wc -c file

统计文件,只显示字节数

wc -w file

统计文件,只显示单词数

wc -l file

统计文件,只显示文件行数

wc file1 file2

统计多个文件,显示汇总信息

wc < file

统计文件,显示行数、单词数、字节数,不带文件,便于shell脚本后续处理

wc -L file

打印出文件行最长的节数

疑惑

wc -c 与 wc -w 是如何统计的

在统计 hello.txt 时, wc -c 的结果为 55wc -m 的结果为 45 ,为什么统计的结果不一样?这个文本中包含了中文内容,猜测和这个有关

验证是否与中文有关

这个好办,建一个不带中文的文件,验证如下

可以看到统计的结果是一样的

中文是如何统计的?

这个就涉及到编码的问题了,先用 hexyl 查看一下,字节的总数为55,但是在进行字符统计时,使用的unicode编码将3个字节计算为1个字符(例如 被编码成 E5 A5 BD ),这就对上了,哈哈!

编码是个大话题,后续好好学习一下

REF

wc (Unix) - Wikipedia

wc - How to display the number of lines, words and characters in separate lines? - Unix & Linux Stack Exchange

Captured On: [2023-03-02 Thu 16:28]

Confusion with the concept of wc -c and wc -m