
wc(word count)是Linux/Unix系统中用于计数的标准工具,它可以统计文件或输入流中的行数、单词数、字节数和字符数。虽然功能简单,但wc是脚本编写和日常命令行操作中不可或缺的工具。
wc最常用于统计日志行数、代码行数、文件数量等场景。通过与其他命令配合使用,wc可以快速回答“有多少个文件”、“有多少条匹配记录”、“这个文件有多大”等常见问题。掌握wc的几种基本用法,能让你在命令行中更高效地获取统计信息。
1. 基本语法
| 命令 | 说明 |
|---|
wc file.txt | |
wc file1.txt file2.txt | |
wc *.log | |
cat file.txt | wc | |
wc --help | |
2. 常用计数选项
| 命令 | 说明 |
|---|
wc -l file.txt | |
wc -w file.txt | |
wc -c file.txt | |
wc -m file.txt | |
wc -L file.txt | |
3. 实用管道组合
| 命令 | 说明 |
|---|
ls -1 | wc -l | |
ls -la | grep "^-" | wc -l | |
grep -r "ERROR" /var/log/ | wc -l | |
find . -type f -name "*.log" | wc -l | |
ps aux | wc -l | |
cat file.txt | wc -w | |
history | wc -l | |
curl -s https://example.com | wc -c | |
4. 多文件统计
| 命令 | 说明 |
|---|
wc -l *.txt | |
wc -w docs/*.md | |
wc -c file1 file2 file3 | |
wc -m *.csv | |
wc -L *.log | |
5. 脚本友好用法
| 命令/代码 | 说明 |
|---|
count=$(wc -l < file.txt) | |
words=$(wc -w < file.txt) | |
bytes=$(wc -c < file.txt) | |
if [ "$(wc -l < file.txt)" -gt 1000 ]; then echo "文件超过1000行"; fi | |
printf '%s' "$text" | wc -m | |
total=$(wc -l file1.txt file2.txt | tail -1 | awk '{print $1}') | |
6. 实用统计场景
| 命令 | 说明 |
|---|
wc -l $(find . -name "*.py") | tail -1 | |
git ls-files | xargs wc -l | tail -1 | |
cat access.log | awk '{print $1}' | sort | uniq -c | wc -l | |
dpkg -l | wc -l | |
crontab -l | grep -v "^#" | wc -l | |
df -h | tail -n +2 | wc -l | |
7. 常用选项速查
8. 与其他命令配合
| 组合 | 说明 |
|---|
ls + wc | |
grep + wc | |
find + wc | |
ps + wc | |
cat + wc | |
sort + uniq -c + wc | |
cut + wc | |
9. 故障排查
| 问题 | 解决方法 |
|---|
| 输出中包含文件名 | 使用输入重定向:wc -l < file.txt 只返回数字 |
| 单词数统计不准确 | 检查文件中的分隔符;wc默认以空格和换行符分隔单词 |
| 字符数和字节数不同 | 中文字符在多字节编码下(如UTF-8)一个字符占多个字节,用-m统计字符数,-c统计字节数 |
| 多文件统计没有总行 | 当只有一个文件或通配符只匹配一个文件时,不显示总计行 |
| 管道计数少一行 | 某些命令输出包含标题行(如ps aux),可使用tail -n +2排除 |
| wc: file.txt: open: No such file | |
| 通配符未展开 | |
小结: wc最简单的用法也是最实用的用法。在脚本中获取计数值时,务必使用wc -l < file的形式而不是wc -l file,这样可以避免解析文件名。对于大型文件的统计,wc非常高效,因为它只读取文件而不加载全部内容到内存。组合grep和wc可以快速回答“有多少条匹配”的问题,这是日常排查中最常用的技巧之一。
关注公众号(haopython),请回复: LLTWC