Linux grep 命令统计技巧
grep 是 Linux 系统中用于文本搜索的强大工具,除了搜索文本,它还可以配合不同的参数实现高效的统计功能。
统计包含匹配项的行数 (-c)
使用 -c (count) 参数可以统计文件中包含指定模式的 行数。
- 基本语法:
grep -c "关键词" 文件名
- 示例:统计
access.log中包含 “404” 的行数:grep -c "404" access.log
统计匹配项的总次数 (-o + wc)
注意:-c 参数仅统计包含匹配项的行数,如果一行中出现了多次关键词,-c 依然只计数为 1,如果你需要统计
出现的总次数,需要结合 -o (only-matching) 和 wc -l (word count) 命令。
- 实现原理:
-o将每个匹配项单独输出为一行,然后通过管道传给wc -l进行行数统计。 - 示例:统计文件中 “error” 出现的总次数:
grep -o "error" 文件名 | wc -l
统计多个文件中的匹配行数
你可以直接在 grep 命令后指定多个文件或使用通配符。
- 统计当前目录下所有
.log文件中包含 “Failed” 的行数:grep -c "Failed" .log
- 如果想统计所有文件的总和,可以结合
-h参数(不显示文件名):
grep -h "Failed" .log | wc -l
忽略大小写统计 (-i)
在统计时,如果需要忽略大小写,可以添加 -i 参数。
- 示例:统计包含 “Warning”、”warning” 或 “WARNING” 的行数:
grep -ic "warning" 文件名
统计不包含某模式的行数 (-v)
使用 -v (invert-match) 参数可以反向选择,统计不包含指定关键词的行数。
- 示例:统计文件中不包含 “success” 的行数:
grep -vc "success" 文件名
进阶:统计词频分布 (配合 sort 和 uniq)
如果你想统计文件中每个单词出现的频率,可以结合 sort 和
uniq 命令。
- 示例:提取所有单词并按出现次数排序:
grep -oE "[a-zA-Z]+" 文件名 | sort | uniq -c | sort -nr
- 命令解析:
-oE:匹配单词并使用扩展正则表达式。sort:排序以便uniq处理。uniq -c:统计重复出现的次数。sort -nr:按数字逆序排列,显示出现频率最高的词。
- grep -c:统计包含关键词的行数。
- grep -o | wc -l:统计关键词出现的总次数。
- grep -ic:忽略大小写统计行数。
- grep -vc:统计不包含关键词的行数。
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/489034.html



