Skip to content

wc 命令详解:数行数、单词数、字节数 ​

本文是 Linux 命令速查 中 wc 的从 0 到 1 详解。 目标:把 wc --help 里的每个选项讲清楚,多看几遍后,你在服务器上敲 wc --help 就知道该用哪个选项。 环境依据:GNU coreutils 8.32(Ubuntu 22.04 自带;RHEL/Rocky 自带版本用法一致)。

一、命令是干什么的 ​

wc 是 word count(字数统计) 的缩写,用来统计一个文件(或一段管道输入)的:行数、单词数、字节数、字符数、最长一行的宽度。

  • 想知道一个文件有多少行?wc -l;
  • 想知道命令输出有多少条?命令 | wc -l;
  • 想知道文件多大(字节数)?wc -c。

类比:wc 就像 Word 里"字数统计"那个小弹窗,只不过它在终端里秒出结果,而且能直接接在管道后面统计"上一个命令的输出有多少行"。

它属于 GNU coreutils,配合管道是 SRE 日常统计利器。

二、命令语法 ​

bash
wc [选项]... [文件]...
  • [选项]:可选,指定要统计哪几项(行/词/字节/字符/最长行);
  • [文件]:可选,指定统计谁;不写就从标准输入读;可一次给多个,最后会给一个 total 合计。

不加任何选项时,默认一次输出"行数、单词数、字节数"三项。

三、选项全表(对照 wc --help) ​

wc 选项都是"选要统计哪一项",输出列的固定顺序是:行数、单词数、字符数、字节数、最长行宽。

1. 选统计哪一项 ​

选项中文含义什么场景用
-l,--lines统计行数(换行符个数)最常用,数文件/输出有几行
-w,--words统计单词数(空白分隔的词)数一段文本有多少个词
-c,--bytes统计字节数看文件占多少字节
-m,--chars统计字符数统计中文等多字节字符时用(和 -c 不同)
-L,--max-line-length打印最长一行的显示宽度想看哪行最长、排版对齐时

2. 其他 ​

选项中文含义什么场景用
--files0-from=F从文件 F 里读 NUL 分隔的文件名列表来批量统计脚本批量处理文件清单时

-l、-w、-c、-m 可以任意组合。不给任何选项时,等价于同时给了 -l -w -c。

四、由浅入深的典型示例 ​

演示文件都在 /tmp/sre_shard_txt 下。demo.txt 内容是 7 行单词:apple / banana / apple / cherry / banana / apple / date。

示例 1:默认一次输出三项 ​

bash
wc demo.txt
text
 7  7 44 demo.txt

三列分别是:7 行、7 个单词、44 个字节,最后是文件名。

示例 2:只数行数(最常用) ​

bash
wc -l demo.txt
text
7 demo.txt

-l 是 line 的意思。统计"有多少行"时基本只用它。

示例 3:只数单词数 ​

bash
wc -w demo.txt
text
7 demo.txt

这里每行一个单词,所以单词数和行数都是 7。一行有多个词时两者就不同了。

示例 4:只数字节数 ​

bash
wc -c demo.txt
text
44 demo.txt

示例 5:数字符数(中文场景才有别于字节) ​

bash
wc -m demo.txt
text
44 demo.txt

本例全是英文字符,一个字符一个字节,所以 -m 和 -c 都是 44。如果文件里有中文,一个中文是 3 个 UTF-8 字节,此时 -c(字节)会大于 -m(字符)——数"中文字个数"要用 -m。

示例 6:看最长一行多宽 ​

bash
wc -L special.txt
text
19 special.txt

special.txt 里最长一行是 line three with\ttab,显示宽度 19。

示例 7:一次统计多个文件并给合计 ​

bash
wc -l long.txt app.log
text
 50 long.txt
  8 app.log
 58 total

两个文件分别的行数,最后 total 是合计。

示例 8:接在管道后面统计(SRE 高频) ​

bash
ls | wc -l
text
9

ls 列出来的条目数,经过管道交给 wc -l 数,就得到"当前目录有 9 个条目"。这种"命令 | wc -l"是统计结果条数的万能套路。

五、高频组合速记 ​

命令用途
wc -l 文件数文件有多少行(最常用)
wc -c 文件数文件多少字节
wc -m 文件数字符数(中文用这个)
wc -w 文件数单词数
wc 文件一次看 行/词/字节 三项
命令 | wc -l统计上一个命令输出了多少行(万能套路)
grep 关键词 文件 | wc -l统计匹配到多少行

六、RHEL 系与 Debian 系差异 ​

wc 属于 GNU coreutils,两系用法完全一致。唯一要注意的细微点:

  • -c 与 -m 的区别在多字节语言下才有意义,两系都是这个行为;
  • 统计中文时记得用 -m 而不是 -c,这是跨发行版通用的注意点。

七、新手易错点 ​

  1. wc -l 数的是换行符个数:如果文件最后一行没有换行符,那行不会被计入行数,可能差 1。
  2. -c 和 -m 别用反:数字节用 -c,数"字符个数"(尤其中文)用 -m;纯英文时两者结果碰巧相同。
  3. 不加选项时三列顺序别读错:是"行数 词数 字节数",不是别的顺序。
  4. 接管道时别再给文件名:ls | wc -l 就行,写成 ls | wc -l 文件 会变成统计那个文件。
  5. wc 只读不写,可放心用。

八、相关命令与文档 ​