统计日志中每个IP访问的次数

对于一个网站来说 有PV 和UV一说
PV 点击量(page view)
UV (user view)

第一种方法:

awk  '{IP[$1]++}END{for(i in IP){print IP[i],i}}'  access_log | sort -n

假设access_log里面有5行数据,上面的IP只是一个常量,可以是A也可以是B。
IP[192.168.1.2]++=1 假设ip(变量)是1.2在文档里第一次出现1.2就是1
IP[192.168.1.2]++=2 第二次出现1.2,这时候在原来的基础上加2
IP[192.168.1.3]++=1 1.3第一次出现,所以1.3的值是1
IP[192.168.1.4]++=1 1.4第一次出现,所以1.3的值是1
IP[192.168.1.3]++=2 1.3第二次出现,所以1.3的值是2
·········
以此推可以获取到所有ip的次数

$1(变量)对于awk来说是第一列,
END 因为已经执行完毕了,所以执行最后一次,所以用END
for(i in IP) 定义一个常量i循环IP的次数
{print IP[i],i} 输出一个IP执行多少次

sort -n 升序(由小到大)将输出按顺序输出
(sort -n) 降序(由大到小)

*第二种方法:

who | awk 'IP{$5}++'

who 命令显示关于当前在本地系统上的所有用户的信息
这里显示who输出的第5列(第五列是ip)

你可能感兴趣的:(shell)