ameimeng 发表于 2018-11-20 13:58:33

nginx或apache日志清洗脚本

  #!/bin/sh
  zcat www_access_log.2013-12-31.gz|awk -F"\"" '
  BEGIN{
  OFS="@"#输出字段之间的分隔符,用别的也可以
  }
  {
  ip=""
  ips=""
  logtime=""
  if(match($1,/([^-]+|-) [^ ]+ ([^ ]+ )?\[[^:]+:([^ ]+)/,f))
  {
  ip=f
  logtime="2013-12-30 "f
  }
  ip=ip=="-"?"":ip
  if(length(ip)>15)
  {
  #ips=ip;ip=""
  ip=gensub(/ *,.*/,"","g",ip)
  if(length(ip)>15){ip=""}
  }
  if(match($2,/+ ([^ ?]+)/,f))
  {
  page=f
  }
  else
  {
  page=$2
  }
  split($3,f," ")
  code=f
  size=f
  referer=$4=="-"?"":gensub(/?.*/,"","g",$4)
  ua=$6=="-"?"":$6
  split($8,f,"=")
  uid=f
  split($12,f,"=")
  session=f
  time=$14
  print logtime,ip,page,code,size,referer,ua,uid,session,time
  #变量名#########含义############举例####################################
  #logtime      日志时间      例如:2013-12-30 00:00:02
  #ip             访问ip          例如:122.68.247.61
  #page         访问的页面      例如:/index.html
  #code         页面状态      例如:200,404等
  #size         页面大小      例如:29872
  #referer      从哪个页面过来例如:http://www.duba.com/
  #ua             浏览器信息      例如:Mozilla/4.0 (compatible; MSIE 8.0;。。。
  #uid            用户的uid       例如:70894283
  #session      用户session信息 例如:a54867bcb5f8462a5eff8caf9e5bbf78
  #time         页面执行时间    例如:0.004
  ########################################################################
  }'
  




页: [1]
查看完整版本: nginx或apache日志清洗脚本