nginx或apache日志清洗脚本

#!/bin/sh

zcat www_access_log.2013-12-31.gz|awk -F"\"" '

BEGIN{

        OFS="@"  #输出字段之间的分隔符,用别的也可以

}

{

        ip=""

        ips=""

        logtime=""

        if(match($1,/([^-]+[0-9]|-) [^ ]+ ([^ ]+ )?\[[^:]+:([^ ]+)/,f))

        {

                ip=f[1]

                logtime="2013-12-30 "f[3]

        }

        ip=ip=="-"?"":ip

        if(length(ip)>15)

        {

                #ips=ip;ip=""

                ip=gensub(/ *,.*/,"","g",ip)

                if(length(ip)>15){ip=""}

        }

        if(match($2,/[A-Z]+ ([^ ?]+)/,f))

        {

                page=f[1]

        }

        else

        {

                page=$2

        }

        split($3,f," ")

        code=f[1]

        size=f[2]

        referer=$4=="-"?"":gensub(/?.*/,"","g",$4)

        ua=$6=="-"?"":$6

        split($8,f,"=")

        uid=f[2]

        split($12,f,"=")

        session=f[2]

        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

        ########################################################################

}'


你可能感兴趣的:(apache,nginx,log)