如何统计日志文件中指定IP的总出现次数
指定IP日志出现次数统计实现方案
功能说明
实现传入IP参数后直接返回该IP在指定日志文件内的总出现次数,符合要求的调用和输出格式。
脚本实现
创建名为search的脚本文件,内容如下:
#!/bin/bash # 参数校验 if [ $# -ne 3 ] || [ "$1" != "ip" ];then echo "参数错误,正确用法:/search ip <目标IP>" exit 1 fi # 提取传入的目标IP TARGET_IP=$3 # 请修改为你实际的日志文件路径,支持通配符匹配多日志 LOG_PATH="/var/log/nginx/access.log" # 统计IP出现次数,grep -c直接返回匹配行数,执行效率更高 IP_COUNT=$(grep -c "${TARGET_IP}" ${LOG_PATH}) # 按要求格式输出结果 echo "${TARGET_IP} - ${IP_COUNT}"
使用方法
- 给脚本添加执行权限:
chmod +x search - 移动到系统可执行目录方便全局调用:
mv search /usr/local/bin/ - 执行查询:
/search ip 123.12.12.167 - 输出示例:
123.12.12.167 - 120
注意:如果你的日志是压缩包格式(比如
.gz后缀的切割日志),把grep替换成zgrep即可直接统计压缩日志内容,无需提前解压。
内容的提问来源于stack exchange,提问作者Mookiedong
相关产品推荐
相关产品推荐

