统计日志中独立ip数,用awk很容易搞定:

awk ‘{ip[$1]+=1} END{for(i in ip) {print i,” “ ip[i]}}’ access.log wc -l

其中ip为awk中的数组,$1作为数组下标,相同ip就累计到同一个元素中,很简单吧。

如果想统计访问成功的ip数,就在前面过滤一下即可:

awk ‘{if ($10==200) print $1}’ access.log awk ‘{ip[$1]+=1} END{for(i in ip) {print i,” “ ip[i]}}’ wc -l

其中$10为http请求的返回码,不同的accesslog格式,位置有可能不同,需要修改。


Simon Lee

My blog