本博文为老男孩linu培训机构早期的培训教案,特分享以供大家学习参考。
全部系列分为5篇博文,本博文为第4篇:

4.3 老男孩培训第八节课前考试题案例(门户面试题)

考试题七:处理以下文件内容,将域名取出并根据域名进行计数排序处理:(百度和sohu面试题)

oldboy.log

http://www.etiantian.org/index.html

http://www.etiantian.org/1.html

http://post.etiantian.org/index.html

http://mp3.etiantian.org/index.html

http://www.etiantian.org/3.html

http://post.etiantian.org/2.html

解答:

分析:此类问题是运维工作中最常见的问题。可以演变成分析日志,查看TCP各个状态连接数,查看单IP连接数排名等等

第一类过滤域名方法

方法很多老男孩这里给出六种为例。还可以写出几种留给大家了。

法一:

[root@oldboy ~]# cut -d "/" -f 3 oldboy.log |sort|uniq -c

1 mp3.etiantian.org

2 post.etiantian.org

3 www.etiantian.org

法二:

[root@oldboy ~]# awk -F "/" '{print $3}' oldboy.log |sort|uniq -c

1 mp3.etiantian.org

2 post.etiantian.org

3 www.etiantian.org

法三:

[root@oldboy ~]# sed 's/^ htt.*\/\///g' oldboy.log |sed 's/\/.*html$//g'|sort|uniq -c

1 mp3.etiantian.org

2 post.etiantian.org

3 www.etiantian.org

法四:

[root@oldboy ~]# cat oldboy.log |tr "\/" "\n"|grep etiantian|sort|uniq -c

1 mp3.etiantian.org

2 post.etiantian.org

3 www.etiantian.org

法五:set+完全正则匹配

[root@OLDBOY ~]# sed -e 's#^.*//\(.*etiantian.*\)/.*html#\1#gp' oldboy.log|sort|uniq -c|sort -rn

6 www.etiantian.org

4 post.etiantian.org

2 mp3.etiantian.org

第二类:awk数组

法五:

[root@oldboy ~]#cut -d "/" -f 3 test.log|awk '{++S[$1]} END {for(key in S) print key,S[key]}'|sort -k2

mp3.etiantian.org 1

post.etiantian.org 2

www.etiantian.org 3

法六:一个利用AWK数组综合解决方法

[root@oldboy ~]# awk -F "/" '{++S[$3]} END {for(key in S) print key,S[key]}' oldboy.log|sort -k2

mp3.etiantian.org 1

post.etiantian.org 2

www.etiantian.org 3

以上答案不同组合已可以达到10多种答案

提示:有关shell及以上用到的命令的学习请参考老男孩的课上课程笔记或者相关视频讲解.

本文未完待续。更多博文内容:
本系列博文完整内容共5篇:
第一篇:详解linux netstat输出的网络连接状态信息
http://oldboy.blog.51cto.com/2561410/1184139
第二篇:庖丁解牛获取连接状态数的awk数组命令
http://oldboy.blog.51cto.com/blog/2561410/1184165
第三篇:awk数组命令经典生产实战应用拓展
http://oldboy.blog.51cto.com/blog/2561410/1184177
第四篇:老男孩培训第八节课前awk考试题案例(门户面试题解答) http://oldboy.blog.51cto.com/2561410/1184206
第五篇:linux生产服务器有关网络状态的优化措施(告一段落)
http://oldboy.blog.51cto.com/2561410/118422