wc 是什么
wc 统计文件的行数、词数、字节数与最长行长度。它在两类场景里最有用:一是量规模,例如日志多大、代码多少行;二是做管道计数,统计满足条件的记录有多少条。理解它的计数口径很重要——行数数的是换行符个数,与编辑器显示的行数可能相差一行。
基本信息
| 适用平台 | Linux、Unix 通用(coreutils) |
|---|---|
| 命令语法 | wc [选项] [文件...] |
| 常用选项 | -l 行数 / -w 词数 / -c 字节数 / -m 字符数 / -L 最长行长度 |
| 口径差异 | -c 按字节,-m 按字符,多字节文本两者差别很大 |
典型使用场景
- 统计日志行数,估算处理耗时
- 统计有效配置行数:先过滤注释再计数
- 管道里统计符合条件的记录条数
- 检查文件末尾是否缺少换行符
- 找出最长的一行,判断是否需要调整格式
常用示例
常用示例
wc -l access.log
wc -lw access.log # 行数与词数
grep -v '^#' app.conf | wc -l # 统计有效配置行
tail -n +2 data.csv | wc -l # 去掉表头后的行数
wc -m cn.txt; wc -c cn.txt # 中文字符数与字节数对比
wc -L app.log # 最长行长度选项说明
| 选项 | 统计对象 | 提示 |
|---|---|---|
| -l | 换行符个数 | 末行没有换行时不计入 |
| -w | 以空白分隔的词数 | 标点会被算进词里 |
| -c | 字节数 | 结果与编码有关 |
| -m | 字符数 | 多字节字符按一个字符计 |
| -L | 最长行长度 | 制表符按固定宽度展开计算 |
行数数的是换行符。文件最后一行没有换行符时不会被计入,与编辑器显示的行数可能相差一行,做严格比对时要留意。
字节数与字符数在纯英文文本上结果相同,中文文本里差别会非常大;判断编码与体积时别把两者混用。
多文件时输出列的顺序随选项变化,固定列数再跟文件名。脚本里解析最好把选项写全,或干脆只对单个文件统计,免得列位置错位。