Wave Spread...

运维应用实例(一)- 文本处理及排序

分类:Linux 评论: 0

实际问题:统计后台日志中域名/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";
}

来源链接:牛客网

回复