需要统计用户日志信息,分析出用户行为时,用shell往往能方便地取出很多数据,取出后再放置到excel中统计。
例如:统计日志中含loadCustomProcess这个地址的访问,按访问耗时排序:
grep "loadCustomProcess" /home/workflow/socket.txt | awk -F " " '{print $11}'|awk -F ":" '{print $2}'|sort -nr
查询出现“INFO",出现量前10的记录:
grep "INFO" /usr/share/tomcat6/logs/flowplatform.log| awk -F " " '{print $8}'|sort |uniq -c|sort -nr
解析:
grep "loadCustomProcess" /home/workflow/socket.txt 找出文件/home/workflow/socket.txt中包含loadCustomProcess的行
uniq -c:统计连续出现的次数(注意是连续),因此在uniq -c前需先用sort才能有sql中count的效果
awk SQL语句中的SELECT字段,“-F " "”表示按照空格对每行数据进行分隔,得到的每个单元就是一个字段,而“$7”就是第七个字段,如果取第7、8两个字段,并且两个字段用tab号隔开,则'{print $7"\t"$8}'
sort 把结果排序,为后面的汇总做准备,
sort -nr 是按照数值大小倒序排列,相当于SQL中的ORDER BY ... DESC,
head -10 取前十条