1、sed -n '/14\/Nov\/2018:20:30:/,/14\/Nov\/2018:20:31/p' api.weclassroom.com.access.log-20181115 | grep '/class/replay/allow' | awk -F"|" '{sum+=$14*1000};END{print sum}'
指定时间范围,在某文档里查询 并统计 每行以| 作为分隔符的第14列的值的,所有行的总数。
2、/home/work/local/nginx/logs ----nginx access.log日志
3、sed -n '/14\/Nov\/2018:20:35:/,/14\/Nov\/2018:20:40/p' api.weclassroom.com.access.log-20181115 |awk -F"|" '{print $1,$3}'|awk '{print $1" "$3}'|awk '{sum[$2]+=1}END{for(i in sum)print i"\t"sum[i]}' |sort -k 2nr|head :
/stream/video/list 1664
/file/get/clilistlessondoc 1161
/tool/clientdebugfile 590
/service/ini/class 311
/service/ini/user 275
/replay/status 197
/service/chat?i=22&l=221893&sign=1&t=1000 153
/stream/callback/onpublish 147
/tool/get/record/url 120
/tool/sts/gettoken?appuniqid=actiongateway_v10 115
awk脚本
关于awk脚本,我们需要注意两个关键词BEGIN和END。
- BEGIN{ 这里面放的是执行前的语句 }
- END {这里面放的是处理完所有的行后要执行的语句 }
- {这里面放的是处理每一行时要执行的语句}
awk默认按照字符串比较的,如果要比较数值,需要先强制类型转换,即 $1+0,转换成整数。