wc 是 word count 的缩写,用于统计文件的行数、字数、字节数。虽然功能简单,但在日志分析、数据处理中非常实用。
统计文件的行数、字数、字节数:
wc file.txt
输出示例:
10 20 150 file.txt
三个数字分别是:行数、字数、字节数。
| 选项 | 含义 |
|---|---|
| -l | 只统计行数 |
| -w | 只统计字数 |
| -c | 只统计字节数 |
| -m | 只统计字符数 |
| -L | 最长行的长度 |
wc -l file.txt
wc -w file.txt
wc -c file.txt
-l 统计行数,是最常用的功能:
wc -l file.txt
cat file.txt | wc -l
ls | wc -l
find . -name "*.txt" | wc -l
find . -name "*.py" -exec wc -l {} + | tail -1
find . -name "*.js" | xargs wc -l | tail -1
-w 统计字数(以空白分隔):
wc -w document.txt
echo "hello world" | wc -w
-c 统计字节数,-m 统计字符数:
wc -c file.txt
wc -m file.txt
对于 ASCII 文件,两者相同。对于中文等多字节字符,-m 统计字符数,-c 统计字节数:
echo "你好" | wc -c
echo "你好" | wc -m
运行结果:
7
3
"你好"两个汉字占 6 个字节(UTF-8 编码),加上换行符共 7 字节。字符数是 2 个汉字加换行符共 3 个。
-L 显示最长行的长度:
wc -L file.txt
wc file1.txt file2.txt file3.txt
wc -l *.txt
输出示例:
10 20 150 file1.txt
15 30 200 file2.txt
8 16 100 file3.txt
33 66 450 total
最后一行是总计。
wc 经常与其他命令配合使用。
grep "ERROR" app.log | wc -l
cat /etc/passwd | wc -l
find . -type f -name "*.txt" | wc -l
find . -type d | wc -l
cat document.txt | tr -s ' ' '\n' | sort | uniq -c | sort -rn | head -10
awk '{print $1}' access.log | sort | uniq -c | sort -rn | head -10
du -sh * | sort -h
find . -name "*.py" -type f -exec wc -l {} + | sort -n | tail -10
find . -name "*.py" -type f | xargs wc -l | sort -n | tail -10
grep -c "^$" file.txt
awk '/^$/{count++} END{print count}' file.txt
grep -cv "^$" file.txt
awk 'NF{count++} END{print count}' file.txt
wc -c file.txt
stat -c%s file.txt
wc -l $(find . -name "*.txt")
find . -name "*.txt" -exec wc -l {} +
lines1=$(wc -l < file1.txt)
lines2=$(wc -l < file2.txt)
echo "file1: $lines1, file2: $lines2"
注意用 < 重定向输入,wc 不会输出文件名。
-l 行数,-w 字数,-c 字节数-m 字符数,-L 最长行wc -l < file 不输出文件名