使用grep、awk统计查询日志

日志样本:
囧,日志格式是我随便定得(莫喷,在明珠时有专门的数据组统计日志,日志都非常规范,在这完全乱套了),为了方便统计支付成功的总金额旁边都空了个空格,这样的话方便使用awk取出金额!
[INFO] 2014-11-05 15:30:31,067 [http-bio-8060-exec-24] [com.xxxx.service.impl.PayServiceImpl.updatePayOver:56]module:[PAY],orderid:[xxxxxxx],trade_no:[xxxxxxxx],total_fee:[2560.0],payMethod:[百度钱包]
[INFO] 2014-11-05 15:30:31,095 [http-bio-8060-exec-24] [com.xxxx.service.impl.PayServiceImpl.updatePayOver:60]module:[PAY],orderid:[xxxxxxx],trade_no:[xxxxxxxx],total_fee:[ 2560.0 ],payMethod:[百度钱包],code:[payok]
第一步:统计出支付成功的日志
*”[]“属于正则关键字故需要转义
grep 'code:\[payok\]' catalina.out
当然,为了性能我们可以查出支付成功的订单时就将它写入一个文件,后面的查询再依据这个来查询!
grep 'code:\[payok\]' catalina.out > ~/test.txt

第二部:取出金额,并计算金额

cat ~/test.txt | awk '{print $6}' | awk '{sum+=$1} END {print sum}'

当然需要查询支付成功的订单的数目直接

wc -l ~/test.txt

下面对上面的查询进行扩展:

1. 查询当天的支付的订单数目

cat ~/test.txt | grep -c `date "+%Y-%m-%d"`

同样也是先筛选出支付成功的订单,然后再塞选今天的数目

这里先列出grep常用的命令行选项:
-c    只显示有多少行匹配,而不具体显示匹配的行。
    -h    不显示文件名。
    -i    在字符串比较的时候忽略大小写。
    -l    只显示包含匹配模板的行的文件名清单。
    -L    只显示不包含匹配模板的行的文件名清单。
    -n    在每一行前面打印改行在文件中的行数。
    -v    反向检索,只显示不匹配的行。
    -w    只显示完整单词的匹配。
    -x    只显示完整行的匹配。
    -r/-R 如果文件参数是目录,该选项将递归搜索该目录下的所有子目录和文件。

2. 查询当月支付成功的订单

cat ~/test.txt | grep `date "+%Y-%m"`

date为日期函数``表示嵌套命令,也可以直接grep 2014-11,对于中文字符或者有空格的需要grep 后面的参数加上""引号(单引或者双引貌似都行)

3. 统计10月和11月的订单grep支持正则,很是强大
grep '2014-1[0-1]'
剩下的不多说的,看官自己去扩展

下面来说说replace、find
1. 查询多个 tomcatContext信息(之前面试的时候有遇到过,确实很方便)
find ./ -name server.xml | xargs grep "<Context"

2. 统一更改配置文件中的支付回调域名(前提:有100多个配置文件source_xxx.properties修改,实在受不了,查了这个命令,非常好用)

replace 'xxx.xxx.cn' 'xx.xxx.cn' -- source_*

希望大家补充,我也好去多学习一些,啊哈哈哈...

下面是按照每天统计出来的热点图,如图可看出其实7点左右支付的人最少最适合更新代码!

转载于:https://my.oschina.net/qq596392912/blog/341208

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值