起因

这是今天我线上出了一个bug,需要查看日志并统计一个我需要的信息出现的频率,可以叫做分组统计。


日志文件部分内容


00:09:07.655 [showcase_backend][ShowcaseServiceImpl] WARN - showcase add recommend from taobao failed |shopId=1482502318|itemId=548320850657||530|Remote service error|isv.item-recommend-service-error:SAVE_REQUEST_TOO_MANY_TIMES|
00:09:07.673 [showcase_backend][topsdk] ERROR - 2017-06-27 00:09:07.673^_^xxxxxxx^_^taobao.item.recommend.add^_^10.28.42.60^_^Linux^_^18^_^http://gwx.api.taobao.com/router/rest^_^app_key=xxxxx&partner_id=top-sdk-java-20170607&method=taobao.item.recommend.add&v=2.0&session=xxxxxxxx&format=json&sign_method=hmac&num_iid=5483473847602&timestamp=2017-06-27+00%3A09%3A07^_^{"error_response":{"code":530,"msg":"Remote service error","sub_code":"isv.item-recommend-service-error:SAVE_REQUEST_TOO_MANY_TIMES","sub_msg":"橱窗推荐商品失败","request_id":"qm4l3wu2cnhu"}}
00:09:07.673 [showcase_backend][ShowcaseServiceImpl] WARN - showcase add recommend from taobao failed |shopId=14825032138|itemId=548347847602||530|Remote service error|isv.item-recommend-service-error:SAVE_REQUEST_TOO_MANY_TIMES|
00:09:07.695 [showcase_backend][ShowcaseServiceImpl] WARN - showcase add recommend from taobao failed |shopId=148250232138|itemId=546199835284||530|Remote service error|isv.item-recommend-service-error:SAVE_REQUEST_TOO_MANY_TIMES|橱

目的

统计每个shopId出现的错误的次数


方案

使用awk的分组统计


awk代码


cat xxx.log | grep shopId | awk -F '|' '{print $2}' | awk -F '=' '{s[$2] += 1} END {for (i in s) {print i, s[i]}}'

部分统计效果如下

···

800599961375 273

800599958609 4

800599956923 674

800599960564 2

800599960811 2930

529692269 1153

800599959910 2174

800599961392 10

800599961165 1

800599959912 26

63456935 558

67376794 490

800599958627 119

800599960127 757

36903919 1263

800599960357 971

800599960604 1

800599961203 211

800599958858 400

800599960609 160

162307612 1

112880504 45

550108033 22

800599956751 1

800599958437 20

800599960164 206

800599959951 134

800599960393 151

60322340 326

72003720 239

800599959939 422

800599959491 1

800599959479 1

72743666 181

800599958012 7

800599957416 9

800599958702 18

63926103 76

800599958897 8241

···


分析awk代码逻辑

cat xxx.log | grep shopId | awk -F '|'  '{print $2}' | awk -F '=' '{s[$2] += 1} END {for (i in s) {print i, s[i]}}'

主要看这段

awk -F '|'  '{print $2}' | awk -F '=' '{s[$2] += 1} END {for (i in s) {print i, s[i]}}'

1.awk -F '|' '{print $2}' 分离出 shopId=1234343 这种格式的数据

2.awk -F '=' '{s[$2] += 1} 将shopId=12323443分离, 定义数组s,awk开始处理每行的数据 s[$2] += 1, 将$2的数据当成key存进arrays,value碰到一样的就加1

3.{for (i in s) {print i, s[i]}} 循环打印出数组的key和value

使用awk进行日志信息的分组统计的更多相关文章

  1. PLSQL_统计信息系列06_统计信息的历史和日志

    20150506 Created By BaoXinjian

  2. Shell学习笔记:awk实现group by分组统计功能

    日常部分数据以 txt 的文件格式提供,为避免入库之后再进行统计的麻烦,故学习 shell 进行处理,减少工作量. 1.样例数据 # test.txt YD5Gxxx|6618151|68254490 ...

  3. Oracle按不同时间分组统计

    Oracle按不同时间分组统计 Oracle按不同时间分组统计的sql 如下表table1: 日期(exportDate) 数量(amount) -------------- ----------- ...

  4. 【.Net】 大文件可使用的文本分组统计工具(附带源码,原创)

    本工具可实现的效果: 1.读取大文件(大于1GB) 2.根据分隔符分割后的列分组 3.速度快. 4.处理过程中,可以随时停止处理,操作不卡死. 5.有对当前内存的实时监测,避免过多占用内存,影响系统运 ...

  5. mtools 是由MongoDB 官方工程师实现的一套工具集,可以很快速的日志查询分析、统计功能,此外还支持本地集群部署管理.

    mtools 是由MongoDB 官方工程师实现的一套工具集,可以很快速的日志查询分析.统计功能,此外还支持本地集群部署管理 https://www.cnblogs.com/littleatp/p/9 ...

  6. 010.简单查询、分组统计查询、多表连接查询(sql实例)

    -------------------------------------day3------------ --添加多行数据:------INSERT [INTO] 表名 [(列的列表)] --SEL ...

  7. Linq to SQL 语法查询(链接查询,子查询 & in操作 & join,分组统计等)

    Linq to SQL 语法查询(链接查询,子查询 & in操作 & join,分组统计等) 子查询 描述:查询订单数超过5的顾客信息 查询句法: var 子查询 = from c i ...

  8. 每日学习心得:CustomValidator验证控件验证用户输入的字符长度、Linq 多字段分组统计、ASP.NET后台弹出confirm对话框,然后点击确定,执行一段代码

    2013-9-15 1.    CustomValidator验证控件验证用户输入的字符长度 在实际的开发中通常会遇到验证用户输入的字符长度的问题,通常的情况下,可以写一个js的脚本或者函数,在ASP ...

  9. ORACLE的分组统计之ROLLUP(一)

    Oracle 9i以后,扩展了group by 的功能,能够满足大部分多维数据的分析统计功能,主要表现: 1. rollup,cube,grouping sets 扩展group by字句提供了丰富的 ...

随机推荐

  1. hdu698 Just a Hook 线段树-成段更新

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1698 很简单的一个线段树的题目,每次更新采用lazy思想,这里我采用了增加一个变量z,z不等于0时其绝 ...

  2. maven(03)

    修改本地库路径 windows下maven默认路径应该是${user.home}/.m2/repository 修改方法:找到maven安装的根路径,里面有一个conf的文件夹,打开里面有一个sett ...

  3. three.js粒子效果(分别基于CPU&GPU实现)

    前段时间做了一个基于CPU和GPU对比的粒子效果丢在学习WebGL的群里,技术上没有多作讲解,有同学反馈看不太懂GPU版本,干脆开一篇文章,重点讲解基于GPU开发的版本. 一.概况 废话不多说,先丢上 ...

  4. 在centos7下安装python3

    环境搭建 准备工具: centos7:http://mirror.bit.edu.cn/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1611.iso virtus ...

  5. FiddlerScript高级技巧---自定义Fiddler菜单

    Tips 书接上回, Fiddler插件 在团队内部试用后,效果很不错,小伙伴们也提出了很多改进的建议: 最近一段Fiddler使用的仍较为频繁,以前碰到一些特殊测试需求时,总是自己在FiddlerS ...

  6. jQ实现的一个轮播图

    众所周知,轮播图是被广泛的运用的. 轮播图我们在很多的网站上都可以看到,例如淘宝.京东这些网站都很常见. 下面开始我们的轮播之旅: 搭建我们的骨架: <!DOCTYPE html> < ...

  7. jdbc驱动的类加载过程

    这段时间跟类加载机制是干上了. 这一篇来分析一下jdbc工作过程中涉及到的类加载流程,重点是想看看在双亲委派模型不适用的时候,如何解决. 第一步,加载数据库的驱动 Class.forName(&quo ...

  8. mysql变量使用总结(转)

    set语句的学习: 使用select定义用户变量的实践将如下语句改成select的形式: set @VAR=(select sum(amount) from penalties);我的修改: sele ...

  9. Swift 入门之简单语法(三)

    集合 数组 数组使用 [] 定义,这一点与 OC 相同 //: [Int] let numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 遍历 for num in nu ...

  10. Neo4j 第五篇:批量更新数据

    相比图形数据的查询,Neo4j更新图形数据的速度较慢,通常情况下,Neo4j更新数据的工作流程是:每次数据更新都会执行一次数据库连接,打开一个事务,在事务中更新数据.当数据量非常大时,这种做法非常耗时 ...