Linux wc命令(word count)用于统计文件中的行数、单词数、字符数等,是文本处理和数据分析中常用的工具。
wc [选项] [文件...]
| 选项 | 说明 |
|---|---|
-l |
统计行数 |
-w |
统计单词数 |
-c |
统计字节数 |
-m |
统计字符数 |
-L |
显示最长行的长度 |
--help |
显示帮助信息 |
--version |
显示版本信息 |
# 创建测试文件
echo -e "Hello World\nThis is a test\nLinux wc command" > test.txt
# 默认统计(行数、单词数、字节数)
wc test.txt
# 输出:
# 3 10 45 test.txt
# 分别表示:行数3、单词数10、字节数45
# 只统计行数
wc -l test.txt
# 输出:
# 3 test.txt
# 统计多个文件
wc -l file1.txt file2.txt file3.txt
# 统计目录中所有.txt文件的行数
wc -l *.txt
# 只统计单词数
wc -w test.txt
# 输出:
# 10 test.txt
# 统计代码文件中的单词数
wc -w *.py *.js
# 统计字节数
wc -c test.txt
# 统计字符数(对于多字节字符,字符数与字节数不同)
echo "你好世界" | wc -c # 字节数
echo "你好世界" | wc -m # 字符数
# 比较字节数和字符数
echo "Hello 世界" | wc -cm
# 显示最长行的字符数
wc -L test.txt
# 创建包含长行的文件
echo -e "short\nvery long line here\nmedium" > lines.txt
wc -L lines.txt
# 输出最长行的长度(字符数)
# 从管道输入
echo "Hello World" | wc
# 输出:
# 1 2 12
# 1行、2个单词、12字节(包括换行符)
# 统计命令输出的行数
ls -l | wc -l
# 统计文件中包含特定模式的行的数量
grep "error" logfile.txt | wc -l
# 创建多个测试文件
echo "File 1 content" > file1.txt
echo "File 2\nwith multiple lines" > file2.txt
# 统计多个文件
wc file1.txt file2.txt
# 输出:
# 1 3 15 file1.txt
# 2 4 24 file2.txt
# 3 7 39 total
# 使用通配符
wc *.txt
# 统计代码项目中的总行数
find . -name "*.py" -exec wc -l {} +
# 统计目录中的文件数量
ls -1 | wc -l
# 统计日志文件中错误的数量
grep -c "ERROR" app.log
# 统计CSV文件的行数(不包括标题行)
tail -n +2 data.csv | wc -l
# 统计README文件中的单词数
wc -w README.md
# 检查文件大小(字节数)
wc -c large_file.bin
# 组合多个选项
wc -lw test.txt # 同时统计行数和单词数
# 使用awk处理wc输出,只显示数字
wc -l file.txt | awk '{print $1}'
# 统计非空行数
grep -c '.' file.txt
# 统计目录中所有文件的总行数
find . -type f -name "*.txt" -exec cat {} + | wc -l
# 统计不同编码文件的字符数
iconv -f gbk -t utf-8 file.txt | wc -m
-L选项统计的是最长行的字符数,而不是字节数--files0-from选项可以处理包含空字符的文件名列表ls | wc -l - 统计文件数量grep | wc -l - 统计匹配行数find | wc -l - 统计查找结果数量wc -l * | sort -n - 按行数排序文件wc -w | awk - 提取统计数字cat | wc -c - 统计管道数据大小| 输出格式 | 说明 | 示例 |
|---|---|---|
wc 文件 |
行数 单词数 字节数 文件名 | 3 10 45 test.txt |
wc -l 文件 |
行数 文件名 | 3 test.txt |
wc -w 文件 |
单词数 文件名 | 10 test.txt |
wc -c 文件 |
字节数 文件名 | 45 test.txt |
wc -m 文件 |
字符数 文件名 | 45 test.txt |
wc -L 文件 |
最长行长度 文件名 | 20 test.txt |
wc 文件1 文件2 |
每个文件的统计 + 总计 | 3 10 45 file1.txt |
-l)find -exec wc {}而不是find | xargs wc处理大量文件split分割后并行处理LC_ALL=C wc提高处理速度test -s更快head -n或tail -n限制处理范围原因: 标点符号被计入单词
解决: 先清理文本或使用其他工具
tr -d '[:punct:]' < file.txt | wc -w
解决: 使用grep过滤空行
grep -c '.' file.txt # 统计非空行
grep -c '^[^[:space:]]' file.txt # 统计非空白行
ls - 列出目录内容,可与wc结合统计文件数grep - 文本搜索,可与wc结合统计匹配数find - 文件查找,可与wc结合统计查找结果awk - 文本处理,可替代wc进行复杂统计du - 统计磁盘使用情况nl - 给文件添加行号