重写之后的脚本。希望还好
#!/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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 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的设计模式综述