Shell 从日志中获取最流行的域

Shell 从日志中获取最流行的域,shell,grep,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 但是popula

我正在尝试从日志文件中获取最流行的域

日志格式如下

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是空的,这意味着命令是错误的

perl-nle'$d{$1}++if m//([^/]+)!; END{foreach(sort{$d{$a}uniq-c统计唯一的出现次数,但需要排序输入。
perl -nle '$d{$1}++ if m!//([^/]+)!; END {foreach(sort {$d{$a} <= $d{$b}} keys(%d)) {print "$d{$_}\t$_"};}' your.log
排序对数据流进行排序 grep有一个标志-o,它只返回与正则表达式匹配的输出

这三个部分放在一起就是您需要在此基础上执行map/reduce并获取所需数据的部分

grep -o '[^.]*\.[^.]*$' logfile | sort | uniq -c
grep只获取单个topdomains和域名,所有条目都按排序排序,uniq统计发生次数

在末尾添加一个sort-n将给出一个列表,其中最顶端的条目是最高的

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

这是相当广泛的。发布更具代表性的数据以及该部分所需的输出。此外,您尝试了什么?@fedorqui我添加了我的尝试。我不明白
grep-i*sites.log
的目的是什么。此外,您的输入显示
https://m.facebook.com
和你的输出
facebook.com
。这是否意味着你想不要删除https部分,只保留域?尝试改进这个,嗯…我相信它应该是降序的。无论如何,你可以玩
$d{a}=$d{$b}
哦!刚刚注意到一个打字错误。错过了一个美元符号…更新答案你的答案没有描述太多它实际的功能。