2-shell练习题-统计日志

【题目要求】
有日志1.log,日志片段如下,要求: 统计出每个IP的访问量有多少?

112.111.12.248 – [25/Sep/2013:16:08:31 +0800]formula-x.haotui.com “/seccode.php?update=0.5593110133088248″ 200″http://formula-x.haotui.com/registerbbs.php” “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;)”
61.147.76.51 – [25/Sep/2013:16:08:31 +0800]xyzdiy.5d6d.com “/attachment.php?aid=4554&k=9ce51e2c376bc861603c7689d97c04a1&t=1334564048&fid=9&sid=zgohwYoLZq2qPW233ZIRsJiUeu22XqE8f49jY9mouRSoE71″ 301″http://xyzdiy.5d6d.com/thread-1435-1-23.html” “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)”
112.111.12.248 – [25/Sep/2013:16:08:31 +0800]formula-x.haotui.com “/seccode.php?update=0.5593110133088248″ 200″http://formula-x.haotui.com/registerbbs.php” “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;)”


【习题分析】
根据日志可以看到IP就是第一段的内容,我们要统计IP访问量,只需要先把1.log的第一段给过滤出来,然后进一步统计每一个IP的量即可
过滤第一段,使用 awk 就可以很容易得到,统计每个IP的访问量则需要排序然后再计算数量,排序使用 sort命令,统计每个 IP 访问量用 uniq



【参考答案】

[root@evan-01 shell]# awk '{print $1}' 1.log | sort -n | uniq -c | sort -n
      1 61.147.76.51
      2 112.111.12.248
[root@evan-01 shell]# 


【答案解析】
1、awk 命令在分段方面还是比较有优势的,这里的 {print $1} 将第一段打印出来,awk 可以用 -F 指定分隔符,如果不指定分隔符,默认就以空白字符(比如:空格、Tab等),本题中 IP 地址就是在第一段
2、sort 命令是用来排序的命令,-n 选项表示以数字的形式排序,如果不加 -n ,则以 ASCII 排序,本题中的 IP 地址以数字的形式排序更容易区分
3、uniq 命令是用来去重复的,一个文本中如果有多行内容是一模一样的,使用 uniq 命令就可以把相同内容的行给删除掉,只留一行。而 -c 选项的作用是计算重复的行数,所以在此问题中使用 uniq -c 正好可以计算 IP 地址的访问数量。不过大家一定要注意,使用 uniq 去重之前必须要先排序
4、本答案最后面的 sort -n 意思是按访问量大小来排序,请求量越大的 IP 排在越后面,如果想要把访问量大的排在前面,可以再加一个 -r 选项,即 sort -rn

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值