巧用Cygwin处理海量日志文件(下)

2014-01-22
  • 1039
  • 0
        上周郝阳来上海, 我和他又聊了下cygwin的shell语句,发现上次对shell的介绍过于基础,详情请见(巧用Cygwin处理海量日志文件)
        用这篇博文详细的介绍下语法的用法。
        一个标准的日志文件中有以下一些属性:
(1) 日期(date) 
(2) 时间(time) 
(3) 客户端IP地址(c-ip)
(4) 用户名(cs-username)
(5) 方法(cs-method)
(6) URI资源(cs-uri-stem)
(7) URI查询(cs-uri-query)
(8) 协议状态(sc-status)
(9) 发送的字节数(sc-bytes)
(10) 协议版本(cs-version)
(11) 用户代理(csUser-Agent)
(12) 引用站点(csReferer)
        现在SEO越来越受到企业的重视,通常情况下也会将关键字字段添加到日志文件中,方便技术人员更好的获取信息加以分析。
        下面来介绍一下常用的语句,方便大家日常工作.P.S. linux 是区分大小写的,操作时注意大小写。
awk '{print $11}' filename.log| sort >keywords.log 提取并输出filename中第12个字段的信息排序并保存到keywords.log中。
grep 'Baiduspider'  filename.log >baiduspider.log   提取百度相关数据。
awk '($9 ~/200/)'   baiduspider.log | awk '{print $9,$7}' | sort >baidu-200.log 提取百度蛛蛛访问产生的所有状态码和数量,并按降序排列。
grep  ' 200 ' baiduspider.log  | awk '{print $7}' | sort | uniq -c | sort -nr | head -n 1000 >baidu200.log 提取百度蛛蛛访问产生的200状态码的URL去重并计数, 倒叙排列,并显示前1000条并输出到baidu200.log文件中。
 
        一般的日志拆分都可以按照这样的语句执行.如果想要分其他纬度分析,可以替换字段再执行语句,这样可以生成各种纬度的拆分日志,增加工作的效率。