运维应用实例(一)- 文本处理及排序
后知后觉 暂无评论
实际问题:统计后台日志中域名/IP地址等出现的次数并进行排序。

处理以下文本内容,将域名取出并进行计数排序,如处理:

http://www.baidu.com/index.html
http://www.baidu.com/1.html
http://post.baidu.com/index.html
http://mp3.baidu.com/index.html
http://www.baidu.com/3.html
http://post.baidu.com/2.html

要求得到如下结果: (可以使用 BASH / PERL / PHP / C任意一种)

域名的出现的次数 域名
3 www.baidu.com
2 post.baidu.com
1 mp3.baidu.com

使用 BASH 实现

awk '{for(i=1;i<=NF;i++) print $i}' website.txt | cut -d'/' -f 3 | sort | uniq -ic| sort -nr

使用 PHP 实现

<?php
$subject = <<< EOF
http://www.baidu.com/index.html http://www.baidu.com/1.html
http://post.baidu.com/index.html
http://mp3.baidu.com/index.html 
http://www.baidu.com/3.html 
http://post.baidu.com/2.html
EOF;
preg_match_all('|http://(.*)/|U', $subject, $matches);
$res = array_count_values($matches[1]);
foreach ($res as $key => $value) {
 echo $value." ".$key."\n";
}

附录

参考链接

本文撰写于一年前,如出现图片失效或有任何问题,请在下方留言。博主看到后将及时修正,谢谢!
禁用 / 当前已拒绝评论,仅可查看「历史评论」。