从日志中获取最受欢迎的域名

时间:2015-05-27 08:09:08

标签: shell grep

我正在尝试从日志文件中获取最受欢迎的域

日志格式如下

197.123.43.59,   27/May/2015:01:00:11 -0600, https://m.facebook.com/

我只对域感兴趣,我想要一个输出如下

XXXX facebook.com

其中XXXX是日志中类似条目的数量

单行内联unix命令任何人

修改

我尝试了以下

grep -i * sites.log | sort | uniq -c | sort -nr | head -10 &> popular.log

但popular.log为空,暗示命令错误

2 个答案:

答案 0 :(得分:1)

perl -nle '$d{$1}++ if m!//([^/]+)!; END {foreach(sort {$d{$a} <= $d{$b}} keys(%d)) {print "$d{$_}\t$_"};}' your.log

如果你不介意perl

答案 1 :(得分:0)

uniq -c计算唯一出现次数,但需要排序输入。 sort对数据流进行排序 grep有一个标志-o,它只返回与正则表达式匹配的输出

这三个部分放在一起就是你需要在这上面执行map / reduce并获得你想要的数据。

grep -o '[^.]*\.[^.]*$' logfile | sort | uniq -c

grep只获取单个topdomains和域名,所有条目都按排序排序,uniq计算出现的次数。

在末尾添加排序-n将为您提供一个列表,其中最顶层的条目是最高的

grep -o '[^.]*\.[^.]*$' logfile | sort | uniq -c | sort -nr