问题:处理一下文件内容,将域名取出并根据域名进行计数排序处理
[root@web01 ~]# cat access.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@web01 ~]# awk -F '[/]+' '{print $2}' access.log|sort|uniq -c|sort -rn -k1
3 www.etiantian.org
2 post.etiantian.org
1 mp3.etiantian.org
awk命令 -F后面给列分割符'[/]+'表示以任意/为分割符。后面为print语句,print语句还可以加条件看下面的例子:
awk ‘{if ($1 < 0.6 && $1 > 0.5) {print $}}'
uniq 命令必须先sort好,uniq -c在行前加上重复次数。sort命令-r表示(3,2,1)降序,-k1表示按第一列排序。
注意一点就是,管道是发起并行程序的好东西,如果文件非常大的话,管道是个好的加速器,管道两边是同时运作的,即一边sort一边uniq运算。