技术宅,fat-man

增加语言的了解程度可以避免写出愚蠢的代码

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

重写之后的脚本。希望还好

复制代码
#!/bin/sh


###############################################
#                                             #
#  author:lishujun                            #
#  date:2013-4-17                             #
#  use:$./testread.sh 20130425                #
#                                             #
###############################################

### load Library ###
. common

#init_date $1
#init_db
common_init_stat_date $1
stat_date=$statDate

### define global variable ###

logFile='./logs/'$stat_date'/wap_access_log.'$stat_date'*'
dataFile='./data/access_detail_'$stat_date'_small'
domain='pp.cn,sou.pp.cn,c0.pp.cn,c1.pp.cn,c2.pp.cn,c3.pp.cn'


#domain=$2
#domain='shuqi.com,pp.cn,shuqiread.com'
ucFlags='fr,ct,ac'

### functions ###

cleanDataFile()
{
        echo clean data files...
        rm $dataFile
}


makeDataFile()
{
        #./kcat.sh  $logFile | awk \
        /www/scripts/stat/kcat.sh  $logFile | awk \
                -v domain=$domain \
                -v ucFlags=$ucFlags \
                -v dataFile=$dataFile \
        '
        function extractField(s)
        {
                gsub(/\[/,"",s)
                gsub(/\]/,"",s)
                return s
        }

        function extractFad(url)
        {
                #if(match(url,/\[FAD:/) > 0)
                if(match(url,/\[FAD:[0-9]+\]/) > 0)
                {
                        return substr(url,RSTART+5,RLENGTH-6)
                }
                return "-"
        }

        function parseUrl(url,params)
        {
                params["domain"] = "-"
                if(match(url,/[:\/]/)>0)
                {
                        params["domain"] = substr(url,1,RSTART-1)
                }

                params["path"] = "-"
                if(match(url,/\/[^\?$]*[\?$]/)>0)
                {
                        params["path"] = substr(url,RSTART,RLENGTH-1)
                }

                params["fr"] = "-"
                if(match(url,/[&?]fr=[^&$]+/)!=0)
                {
                        params["fr"]=substr(url,RSTART+4,RLENGTH-4)
                }

                params["ct"] = "-"
                if(match(url,/[&?]ct=[^&$]+/)!=0)
                {
                        params["ct"]=substr(url,RSTART+4,RLENGTH-4)
                }

                params["ac"] = "-"
                if(match(url,/[&?]ac=[^&$]+/)!=0)
                {
                        params["ac"]=substr(url,RSTART+4,RLENGTH-4)
                }
        }

        BEGIN{
                split(domain,domainList,",")
        }

        {
                #print $0
                userid = extractField($4)
                url = extractField($6)
                session = extractField($9)
                fad = extractFad($0)

                if(int(userid) < 1)
                {
                        userid = session
                }

                for(i in domainList)
                {
                        len = length(domainList[i])
                        if(substr(url,0,len) == domainList[i])
                        {
                                parseUrl(url,urlParams)
                                line = userid" "urlParams["domain"]" "urlParams["path"]" "urlParams["fr"]" "urlParams["ct"]" "urlParams["ac"]" "fad
                                #print line

                                if(line in list)
                                {
                                        list[line]++
                                }
                                else
                                {
                                        list[line] = 1
                                        print line >> dataFile
                                }
                                break
                        }
                }

        }
        '
}


main()
{
        echo `date ` start...
        cleanDataFile
        makeDataFile
        echo `date` done
}

#call main function
main
复制代码

 

 

posted on   codestyle  阅读(200)  评论(0编辑  收藏  举报

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示