最直接的方法是使用 grep -c 选项统计匹配行数,它只输出总数;可加 -i 忽略大小写,对多文件可用 awk 汇总,结合管道还能处理命令输出。

用 grep 统计匹配行数最直接的方法是加 -c 选项,它会只输出匹配行的总数,不显示具体内容。
基础统计:-c 选项
这是最常用的方式,适合快速获知匹配行数:
-
grep -c "关键词" 文件名—— 统计该文件中含“关键词”的行数 -
grep -c "error" /var/log/syslog—— 查看系统日志里 error 出现了多少次 - 如果没匹配到,返回
0;文件不存在或无读取权限会报错(可加2>/dev/null屏蔽错误)
忽略大小写并统计
加上 -i 可让匹配不区分大小写,再配合 -c 即可统计:
-
grep -ci "warning" logfile.txt—— 同时匹配 Warning、WARNING、warning 等 - 注意:
-i和-c顺序无关,grep -ci或grep -ic效果一样
多文件统计与汇总
对多个文件批量统计,grep 默认会在每行结果前标出文件名:
-
grep -c "TODO" *.py—— 统计当前目录所有 .py 文件中含 TODO 的行数,分别输出 -
grep -c "TODO" *.py | awk -F: '{sum += $2} END {print sum}'—— 把各文件结果相加,得到总行数 - 想跳过二进制文件避免警告?加
--text或-a(如grep -ca "pattern" *)
结合管道做动态统计
从命令输出中实时统计,比如查进程、日志流或网络连接:
-
ps aux | grep -c "nginx"—— 统计 nginx 相关进程数(注意会包含 grep 自身,可用pgrep nginx | wc -l更准确) -
journalctl -n 100 | grep -c "failed"—— 查最近 100 行日志里失败记录次数 - 若需排除自身匹配(如用
grep查grep),可用正则技巧:ps aux | grep "[n]ginx" | wc -l











