通过sort + uniq可以完成内容去重的目的,再加上awk的强大解析功能,可对大量数据进行良好筛选。
cat webx.log.20 | grep com.alibaba.intl.ae.biz.marketing | grep rpc | awk -F "channel:" '{print $2}' | awk '{print $1 "->" $3}' | sort -n | uniq -c | sort -nr
sort 用法:
http://hi.baidu.com/chichushanren/item/9e49cd510e2d829c08be1737
新加shell脚本,用于日志统计。
gmalipay.sh ipayserver 'grep "GET /alipay.alibaba.com/checkout.htm" /home/log/out/logs/cookie_logs/27/cookie_log |grep "****" -c' | awk '{sum=sum+$1} END{print sum}'
业务背景:
分布式机器8台,记录一天的cookie log。需要解析这8台机器上的日志,扫描出来访问正常detail页面和商铺detail页面的产品ID。排除爬虫和不排除爬虫。
附件中包含4个解析日志shell脚本:
解析单个cookie log
analyzeToProductId
批量解压并解析多个cookie log
multest
multestWithOutSpider
将多种解析方案合并到一个文件中
allAnalyze
analyzeToProductId:包含解析cookie log的基础逻辑。将访问detail和store的id解析出来,分别输出到文件。
grep "GET /www.aliexpress.com/wholesaleproduct/wholesaleProductDetail.htm" $1 |grep "productId=[0-9]\{9\}" -o |awk '{split($0,a,"="); print a[2]}' > $1.detail
grep -Eo "GET /www.aliexpress.com/fm-store/[0-9]{5,6}/[0-9P]{1,20}\-[0-9]{9}/|GET /www.aliexpress.com/store/[0-9]{5,6}/[0-9P]{1,20}\-[0-9]{9}/" $1 | awk '{split($0,a,"/");split(a[5],b,"-"); print b[2]}' > $1.store
$1:通过命令输入的文件名。
-E, -o: grep参数,-E使用扩展正则表达式语法,支持或逻辑 | 。 -o, 仅将匹配的字符输出到流中。
[0-9]{5,6}/[0-9P]{1,20}\-[0-9]{9}:grep支持正则表达式。
awk '{split($0,a,"/");split(a[5],b,"-"); print b[2]} :awk语法,awk '/AL/ {print $3,$2}' ,将正则匹配的字符串/AL/ 输入到{}中进行操作。$0,表示输入的字符流。若没有添加正则表达式,则将输入流全部进行{}进行操作。
multest,multestWithOutSpider:批量解压,解析8台机器日志。
for file in ` ls $1 `
do
if [ `echo $file | grep -E ".*\.zip"` ]
then
len=${#file}
temp=${file:0:len-4}
gunzip -c $1/$file > $1/$temp
echo unzip $1/$file to $1/$temp success!
fi
done
echo =========Unzip success!=============
echo =========Analyze begin=============
for file in ` ls $1 `
do
if [ `echo $file | grep -E "cookie_log_[0-9]*_[0-9]*" | grep -v "\."` ]
then
echo ---------------------------start analysising ... $file
start_time=`date +"%Y-%m-%d %H:%M:%S"`
grep "GET /www.aliexpress.com/wholesaleproduct/wholesaleProductDetail.htm" $1/$file |grep "productId=[0-9]\{9\}" -o |awk '{split($0,a,"="); print a[2]}' > $1/$file.detail
grep -Eo "GET /www.aliexpress.com/fm-store/[0-9]{5,6}/[0-9P]{1,20}\-[0-9]{9}/|GET /www.aliexpress.com/store/[0-9]{5,6}/[0-9P]{1,20}\-[0-9]{9}/" $1/$file | awk '{split($0,a,"/");split(a[5],b,"-"); print b[2]}' > $1/$file.store
end_time=`date +"%Y-%m-%d %H:%M:%S"`
start=`date -d "$start_time" +%s`
end=`date -d "$end_time" +%s`
echo ---------------------------end analysising $1 time used: `expr $end - $start` seconds
echo
fi
done
gunzip -c $1/$file > $1/$temp:解压。用unzip无法重命名解压出来的文件。
allAnalyze:将普通detail和商铺detail的解析结果合并在一块,并添加爬虫标记。脚本中对每条符合的记录进行if判断,效率比上面的脚本低很多,适合少量数据使用。
grep -E "GET /www.aliexpress.com/wholesaleproduct/wholesaleProductDetail.htm|GET /www.aliexpress.com/fm-store/[0-9]{5,6}/[0-9P]{1,20}\-[0-9]{9}/|GET /www.aliexpress.com/store/[0-9]{5,6}/[0-9P]{1,20}\-[0-9]{9}/" $1 |while read line
do
spider=""
if [ `echo $line|grep -E "Googlebot|bingbot|Baiduspider|Yahoo! Slurp|YandexBot|NHN Corp.|ia_archiver|msnbot"` ]
then
spider="/spider"
fi
if echo $line |grep "GET /www.aliexpress.com/wholesaleproduct/wholesaleProductDetail.htm"
then
echo $line | grep "productId=[0-9]\{9\}" -o |awk '{split($0,a,"="); print a[2]$spider}' > $1.all
else
echo $line | grep -Eo "GET /www.aliexpress.com/fm-store/[0-9]{5,6}/[0-9P]{1,20}\-[0-9]{9}/|GET /www.aliexpress.com/store/[0-9]{5,6}/[0-9P]{1,20}\-[0-9]{9}/" $1 | awk '{split($0,a,"/");split(a[5],b,"-"); print b[2]$spider}' > $1.all
fi
done
|while read line
do:将grep的结果逐行解析处理。
相关推荐
shell-work shell常用分析命令和脚本 ##mysql监控脚本 ##cookielog分析脚本 ##线上java进程信息dump和机器信息dump脚本 ##cpu监控相关 ##dish 磁盘管理
4. **会话管理**:使用session_start启动会话,并设置合适的session.cookie_secure和session.use_only_cookies选项来增强安全性。避免在URL中传递session ID,防止会话劫持。定期清理无效的会话数据。 5. **错误...
一个fork 出多个自己实例的脚本 11-2. printf 11-3. 使用read,变量分配 11-4. 当使用一个不带变量参数的read 命令时,将会发生什么? 11-5. read 命令的多行输入 11-6. 检测方向键 11-7. 通过文件重定向来使用read 11...
【PHP实例开发源码—php 高清影视资源聚合站(VGS)】 在PHP的世界里,构建一个高清影视资源聚合站是一项挑战性的工作,需要掌握一系列的PHP编程技能以及前端技术。VGS(Video Gathering Station)项目就是这样一个...
非官方的Shell脚本风格 33. 杂项 33.1. 交互式和非交互式的shells和脚本 33.2. Shell 包装 33.3. 测试和比较: 另一种方法 33.4. 递归 33.5. 彩色脚本 33.6. 优化 33.7. 各种小技巧 33.8. 安全话题 ...
此外,日志记录功能也是必不可少的,通过error_log()函数可以将错误信息写入日志文件,便于后期排查问题。 6. 邮件服务器管理: PHP的mail()函数或者第三方库如PHPMailer,可能被用于实现发送电子邮件的功能,如...
其中`check_mysql.sh`是一个简单的Shell脚本,用于检查mysqld进程是否运行正常。 ##### 2、主机2上安装和配置keepalived 在主机2上执行类似的操作,确保两个节点之间能够顺利地进行故障转移。 ##### 3、各场景...
MFCHtml 调用脚本 如题。 MFC使用COM加载WMI服务,另类获取系统服务详细 大家都知道,现在流行的检测硬件软件视乎很神秘,我们要获得各种信息好像比较难.但大多数这种软件或多或少的使用了WMI,如果我们能熟练掌握相信...
从fnMyDownload开始,程序首先解析输入的url,拆分为地址,路径,文件名等。然后获取文件头,得到文件大小,然后再下载。重点函数是ThreadDownLoad。下载完之后用FileCombine合并文件。Mydownload.cpp底端的...
从fnMyDownload开始,程序首先解析输入的url,拆分为地址,路径,文件名等。然后获取文件头,得到文件大小,然后再下载。重点函数是ThreadDownLoad。下载完之后用FileCombine合并文件。Mydownload.cpp底端的...
从fnMyDownload开始,程序首先解析输入的url,拆分为地址,路径,文件名等。然后获取文件头,得到文件大小,然后再下载。重点函数是ThreadDownLoad。下载完之后用FileCombine合并文件。Mydownload.cpp底端的...
从fnMyDownload开始,程序首先解析输入的url,拆分为地址,路径,文件名等。然后获取文件头,得到文件大小,然后再下载。重点函数是ThreadDownLoad。下载完之后用FileCombine合并文件。Mydownload.cpp底端的...
从fnMyDownload开始,程序首先解析输入的url,拆分为地址,路径,文件名等。然后获取文件头,得到文件大小,然后再下载。重点函数是ThreadDownLoad。下载完之后用FileCombine合并文件。Mydownload.cpp底端的...
2. 编写脚本`sogou-log-extend.sh`,拆分时间字段并添加年、月、日、小时字段。 3. 使用`hadoop fs -put`命令将处理后的数据上传到HDFS。 4. 在Hive中进行一系列操作,包括创建数据库、表,导入数据,查询等。 - ...
15. **常见Web攻击**:SQL注入、Cookie欺骗、跨站脚本攻击(XSS)和信息泄露漏洞都是Web应用常见的安全威胁。 16. **主动响应**:当检测到入侵时,采取的措施可能包括针对入侵者的行动、修正系统、收集更多信息和...
此外,Styx的自定义配置还可以结合其他shell脚本和自动化工具一起使用,以实现更复杂的网络管理任务。例如,你可以通过shell脚本来自动启动和停止Styx,或者在特定条件下动态修改配置。 在`vendor_styx-R`这个...
shlex模块提供了一个词法分析器,用于解析命令行参数。 #### 5.10 zipfile模块 zipfile模块提供了读写ZIP文件的功能。 #### 5.11 gzip模块 gzip模块提供了读写GZIP压缩文件的功能。 ### 六、邮件和新闻消息处理 ...
run_cmd = f'jmeter -n -t {jmx_file} -l {result_file} -j {log_file}' report_cmd = f'jmeter -g {result_file} -o {report_dir}' # 使用subprocess.Popen()获取命令输出 p1 = subprocess.Popen(run_cmd, shell=...
shlex模块提供了词法分析的功能,用于解析命令行字符串。 **5.11 zipfile模块** zipfile模块提供了ZIP存档文件的操作功能。 **5.12 gzip模块** gzip模块提供了GZIP文件的压缩和解压功能。 #### 六、邮件和新闻...