Skip to main content

Linux 核心命令

文件查看编辑命令 wc

wc 是 Linux 里一个简单又好用的命令,全称是 word count,主要用来统计文件的行数、字数、字节数等信息。

1. 基本用法

wc 最简单的用法就是直接跟上文件名,它会返回文件的 行数字数字符数文件名。比如你有个文件 example.txt,内容是:

Hello world
This is a test

跑这个命令:

wc example.txt

输出会是:

 2  5  22 example.txt

这行输出啥意思呢?

  • 2:行数(lines),文件有 2 行。
  • 5:字数(words),按空格或换行分隔的单词数。
  • 22:字符数(characters),包括空格和换行符。
  • example.txt:文件名。

简单直接,啥都不用记,丢个文件名就行。

2. 指定统计类型 -l、-w、-c、-m

如果不想看所有统计数据,可以用选项只挑你想要的:

  • -l:只统计行数。
  • -w:只统计字数。
  • -c:只统计字节数。
  • -m:只统计字符数(和 -c 差不多,但考虑多字节字符时有区别)。

比如,只想看 example.txt 的行数:

wc -l example.txt

输出:

2 example.txt

想看字数:

wc -w example.txt

输出:

5 example.txt

字节数和字符数类似,但如果文件有非 ASCII 字符(比如中文),-m-c 可能会有不同结果。假设有个文件 chinese.txt,内容是:

你好 世界

执行:

wc -c chinese.txt
wc -m chinese.txt

输出可能是:

10 chinese.txt  # 字节数,UTF-8 编码下每个中文字符占 3 字节
 6 chinese.txt  # 字符数,算上空格和换行

这些选项可以组合用,比如 -lw 一起统计行数和字数:

wc -lw example.txt

输出:

2 5 example.txt

3. 处理多个文件

wc 可以一次处理多个文件,统计结果会逐个列出,最后还有个总计。比如有 file1.txtfile2.txt

wc file1.txt file2.txt

输出可能是:

  2   5   22 file1.txt
  3   8   35 file2.txt
  5  13   57 total

total 那一行是所有文件的统计总和。想只看某些数据,比如行数:

wc -l file1.txt file2.txt

输出:

2 file1.txt
3 file2.txt
5 total

4. 从标准输入读取数据

wc 不一定非要跟文件,它还能从标准输入(stdin)读取数据。比如用管道把内容丢给 wc

echo -e "Hello\nWorld" | wc

输出:

 2  2  12

这里没有文件名,因为数据来自管道。-e 是让 echo 识别换行符 \n。你也可以用其他命令的输出,比如统计 ls 的文件数:

ls | wc -l

这会告诉你当前目录有多少文件或目录。

5. 统计最长行的字符数:-L

想知道文件里最长的一行有多少字符?用 -L 选项。比如 example.txt 内容是:

Hello
This is a test
World

执行:

wc -L example.txt

输出:

13 example.txt

13 是最长行(This is a test)的字符数,包括空格。不常用,但分析文本结构时可能有帮助。

6. 处理非标准编码:-m 和字符集

前面提过,-c 统计字节数,-m 统计字符数。在处理非 ASCII 文件(比如中文、日文)时,-m 更准确。比如文件 unicode.txt 内容是:

你好
世界

用:

wc -m unicode.txt
wc -c unicode.txt

输出:

 5 unicode.txt  # 字符数:4 个中文字符 + 1 个换行
14 unicode.txt  # 字节数:每个中文 3 字节 + 换行

如果你的终端或文件用的是非 UTF-8 编码,注意检查环境变量 LC_ALLLANG,可能影响结果。

7. 实际场景:脚本里的用法

wc 在脚本里特别好用。比如,检查文件是否为空:

if [ $(wc -l < example.txt) -eq 0 ]; then
    echo "文件是空的"
else
    echo "文件有内容"
fi

注意这里用 < 重定向,避免输出文件名。或者统计目录下特定文件的行数总和:

find . -name "*.txt" | xargs wc -l

xargsfind 的结果传给 wc,统计所有 .txt 文件的行数。

8. 注意事项和常见问题

  • 空文件:空文件跑 wc 会返回 0 0 0 文件名
  • 大文件wc 处理大文件很快,因为它只扫描一遍,不用担心性能。
  • 换行符差异:Windows 文件可能有 \r\n,Linux 是 \n,可能影响行数或字符数统计,转换格式(用 dos2unix)可能有帮助。