简介
“wc” 来源于 word count 的缩写,这个命令用于统计指定文本的换行数、单词数和字节数。简单来说,它能快速给出任何文本的基本信息。wc 命令通过读取标准输入或指定的文件内容,计算出行、单词和字节的总数。
使用方式
wc [选项]... [文件]...
常用选项
-c
:打印字节数。-m
:打印字符数。-l
:打印换行数。--files0-from=F
:从指定文件 F 中读取以\0分割的文件名,并统计这些文件的信息。-L
:打印最长行的宽度。-w
:打印单词数。--help
:显示帮助信息。--version
:显示版本信息。
参考示例
1. 显示文件的换行数、单词数以及字节数
wc test.c
可以看到 test.c 文件中有 27 个换行符,74个单词,总共 510 个字节。
jay@jaylinuxlenovo:~/test$ wc test.c
27 74 510 test.c
2. 仅显示文件的换行数
wc -l test.c
可以看到 test.c 中有 27 个换行符。
jay@jaylinuxlenovo:~/test$ wc -l test.c
27 test.c
3. 仅显示文件的字节数
wc -c test.c
可以看到 test.c 中有 510 个字节。
jay@jaylinuxlenovo:~/test$ wc -c test.c
510 test.c
4. 仅显示文件的字符数
wc -m test.c
可以看到 test.c 中有 472 个字符。字符数和字节数的区别详见下文注意事项。
jay@jaylinuxlenovo:~/test$ wc -m test.c
472 test.c
5. 仅显示文件的单词数
wc -w test.c
可以看到 test.c 中有 74 个单词。
jay@jaylinuxlenovo:~/test$ wc -w test.c
74 test.c
6. 从指定文件中读取文件名并打印这些文件的信息
wc --files0-from=files0.txt
首先使用 ls 命令查看当前文件夹下的所有 .c 文件,用于后面对比 wc 指令执行的正确性:
jay@jaylinuxlenovo:~/test$ ls ./*.c
./queue.c ./test2.c ./test.c
可以看到当前文件夹下有 3 个 .c 文件,分别为 queue.c、test2.c、test.c。现在我们使用 find 指令结合-print0 选项将当前文件夹下的 .c 文件名以\0分隔写入到 files0.txt 文件中:
find *.c -print0 > files0.txt
最后使用 wc --files0-from 选项读取该文件并对其内容中出现的文件名进行解析并打印对应文件的统计信息:
jay@jaylinuxlenovo:~/test$ wc --files0-from=files0.txt
69 165 1680 queue.c
24 56 355 test2.c
27 74 510 test.c
120 295 2545 total
可以看到该命令正确打印出了上述三个文件的统计信息以及所有文件的总和信息,说明我们的命令执行是正确的。
注意事项
- wc 命令在除了文件名没有其他选项时即输入
wc [文件名]
时,会默认输出四个信息,分别为:换行数、单词数、字节数和文件名。 - 当统计多个文件时,wc 会为每个文件以及所有文件的总和各自显示一行统计信息。
- wc 计算的 “单词” 是通过空白字符(如空格、制表符等)分隔的字符串,因此其对“单词”的定义可能与日常使用略有不同。
- wc 命令输出的换行数实际上是指换行符的数量,如果文件末尾不是换行符,那么其值可能为真实行数 -1。
- wc 的 -c 选项是打印文件中的 字节 数,而 -m 选项是打印文件中的 字符 数。在多字节字符集中,一个字符可能由多个字节组成,如 UTF-8 。因此这种情况下字符计数和字节计数是不同的。