time awk '{a[$1]++}END{for(i in a){printf("%d\t%s\n",a[i],i)}}' access.log | sort -nr | head -5

timeawk'{a[$1]++}END{for(iina){printf("%d\t%s\n",a[i],i)}}'access.log|sort-nr|head-5谁... time awk '{a[$1]++}END{for(i in a){printf("%d\t%s\n",a[i],i)}}' access.log | sort -nr | head -5
谁能给我详细解释下这个命令的意思 比如那个命令对应的什么意思 我修改下什么能变成统计访问频率最高的top10 url 拜谢 拜谢
展开
 我来答
  • 你的回答被采纳后将获得:
  • 系统奖励15(财富值+成长值)+难题奖励10(财富值+成长值)+提问者悬赏80(财富值+成长值)
百度网友5311d79
2014-09-02 · TA获得超过1.9万个赞
知道大有可为答主
回答量:6356
采纳率:71%
帮助的人:3232万
展开全部
首先得知道access.log的文件格式,才知道访问频率是通过哪个字段值反映的。
追问

文件格式要怎么看?日志格式 : 
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' 
'$status $body_bytes_sent "$http_referer" ' 
'"$http_user_agent" "$http_x_forwarded_for" "$request_time"'; 

追答
从截图看,所有内容都在一行?我凌乱了。
先解释一下上面命令的含义吧。
{a[$1]++} 对每行内容,以第一个字段(估计就是IP地址吧)为数组下标进行计数。若遇第一个字段相同的情况,计数累加。用于统计各个IP地址出现的次数。
END{for(i in a){printf("%d\t%s\n",a[i],i)}} 对数组中的每个下标,打印最终统计次数及IP地址,中间以TAB分隔。
sort -nr 由于之前的打印是次数在前,所以这里可以用sort按数字由大到小排序
head -5 取前5个,即出现次数最多的(访问频率最高的)
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式