2022-04-19 11:25:15.008,b4d13bfca8fe4b93a85e65a88520d945,LogScheduler#printLog,10ms,Y,xxxxxxxx
2022-04-19 12:01:15.002,4d10d093dce8491c8ae3c1bff6dbd7c5,LogScheduler#printLog,999ms,N,xxxxxxxx
2022-04-19 12:12:16.003,d9d1f4b121764edb8cb260417cd75229,LogScheduler#printLog,5ms,Y,xxxxxxxx
2022-04-19 12:15:22.004,e3e10340e51c49ce9d688541ba799283,LogScheduler#printLog,1001ms,N,xxxxxxxx
2022-04-19 12:55:59.005,209d2f1407894da5aa0f44de621515c7,LogScheduler#printLog,1020ms,Y,xxxxxxxx
2022-04-19 13:25:15.006,e09f75c6d0d849068ae713820c94f3f9,LogScheduler#printLog,15ms,Y,xxxxxxxx
2022-04-19 13:25:15.008,b4d13bfca8fe4b93a85e65a885231231,LogScheduler#printLog,99ms,Y,xxxxxxxx

有那么一段日志,需要统计出来以下信息:

  • 输出耗时超过 1000ms 并且结果是 Y 的整行
  • 12:00 ~ 13:00 之间成功的行数,成功率

日志格式:时间,traceId,类方法名,耗时,结果,内容

看到这里,如果小伙伴已经有思路了,那就没必要往下面看了,直接拉到最后,点赞、在看。

这里要使用的就是 awk 命令。

常用内置变量

awk 的主要功能就是对文本进行统计报告,具体介绍可以看菜鸟笔记,下面仅介绍几个常用的内置变量。

  • FS:行字段分隔符,默认是空格,可以使用-F指定分隔符
  • $0、$1……:行字段分隔符分割后获取指定部分,$0 是获取整行记录
  • NF:当前行的字段数量
  • RS:行记录分隔符
  • NR:行号

大概常用的就这几个,下面看一下实际使用效果

效果展示

notes  % > awk '{print $0}' c.log

因为 $0 就代表整行记录,所以输出结果如下。

那 $1 的结果呢?

因为默认是空格作为分隔符,所以输出的结果就只有日期了。

指定分隔符为,之后,看一下输出结果:

题目答案

基本上熟悉了怎么使用剩下的就比较好办了。

  • 耗时超过 1000ms 且 Y 的行
notes  % > awk -F ',' '{split($4,a,"ms"); if(a[1] > 1000 && $5 == "Y") print $0}' c.log

  • 12:00 ~ 13:00 之间成功的行数,成功率
awk -F ',' 'BEGIN{count=0;sum=0}{if($1>="2022-04-19 12:00:00.000" && $1<"2022-04-19 13:00:00.000"){sum+=1;if($5 == "Y")count+=1}}END{print NR,count,sum,count/sum}' c.log

总记录 7 条, 12:00 ~ 13:00 之间成功的行数是 2,成功率 0.5。

总结

上面只是在工作中可能会遇到的一个场景,所以记录下来,如果小伙伴有更合适的方式来统计计算,欢迎留言。

使用 awk 命令统计文本的更多相关文章

  1. 转:使用awk命令获取文本的某一行,某一列

    1.打印文件的第一列(域)                 : awk '{print $1}' filename2.打印文件的前两列(域)                 : awk '{print ...

  2. Linux:使用awk命令获取文本的某一行,某一列

    无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家.教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家.点 这里 可以跳转到教程.”. 1.打印文件的第一列( ...

  3. Linux:使用awk命令获取文本的某一行,某一列;sed插入指定的内容到指定文件中

    awk相关用法: 1.打印文件的第一列(域)                 : awk '{print $1}' filename2.打印文件的前两列(域)                 : aw ...

  4. Linux中的高级文本处理命令,cut命令,sed命令,awk命令

    1.2.1 cut命令 cut命令可以从一个文本文件或者文本流中提取文本列. cut语法 [root@www ~]# cut -d'分隔字符' -f fields    ## 用于有特定分隔字符 [r ...

  5. awk统计文本里某一列重复出现的次数

    比如这样的场景:现在有一个文本,里面是这样的内容: NOTICE: 12-14 15:11:13:  parser. * 6685  url=[http://club.pchome.net/threa ...

  6. linux 文本分析工具---awk命令(7/1)

    awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各 ...

  7. 【文本处理命令】之awk命令详解

    一.awk命令简介 awk 是一种很棒的语言,它适合文本处理和报表生成,其语法较为常见,借鉴了某些语言的一些精华,如 C 语言等.在 linux 系统日常处理工作中,发挥很重要的作用,掌握了 awk将 ...

  8. linux awk命令详解

    linux awk命令详解 简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分 ...

  9. awk命令详解

    搜索 纠正错误  添加实例 awk 文本和数据进行处理的编程语言 补充说明 awk 是一种编程语言,用于在linux/unix下对文本和数据进行处理.数据可以来自标准输入(stdin).一个或多个文件 ...

随机推荐

  1. EF框架基础

    ORM概述: ORM全称是"对象 - 关系映射" . ORM是将关系数据库中的数据用对象的形式表现出来,并通过面向对象的方式将这些对象组织起来,实现系统业务逻辑的过程. Entit ...

  2. css使div居中

    每次想要使div居中都会设置position:absolute;,发现设置其他控件位置时会出现问题,所以采用以下办法: margin:0 auto;

  3. Python窗口学习之使窗口变得更高清

    初学tkinter发现窗口并不像成熟软件那么清楚 在实例化window后加这一行代码 #使窗口更加高清 # 告诉操作系统使用程序自身的dpi适配 ctypes.windll.shcore.SetPro ...

  4. 使用 ssm 实现登录日志记录

    使用 ssm 实现登录日志记录 学习总结 一.基础准备 1. 实现效果 2. 数据表 2.1 登陆日志信息表 2.3 员工表 二.代码实现 1. SysLogLogin 实体类 2. LogAspec ...

  5. Blazor组件自做九: 用20行代码实现文件上传,浏览目录功能 (3)

    接上篇 Blazor组件自做九: 用20行代码实现文件上传,浏览目录功能 (2) 7. 使用配置文件指定监听地址 打开 appsettings.json 文件,加入一行 "UseUrls&q ...

  6. Java中List接口重要实现类一ArrayList

    1.java.util.ArrayList 集合数据存储的结构是数组结构.元素查找快,而增删就比较慢 所以如果要查询数据,遍历数据,ArrayList是最常用的集合 2.ArrayList是不同步的, ...

  7. 使用基于Roslyn的编译时AOP框架来解决.NET项目的代码复用问题

    理想的代码优化方式 团队日常协作中,自然而然的会出现很多重复代码,根据这些代码的种类,之前可能会以以下方式处理 方式 描述 应用时可能产生的问题 硬编码 多数新手,或逐渐腐坏的项目会这么干,会直接复制 ...

  8. mysql4与mysql5的区别_MySQL 4.1/5.0/5.1/5.5/5.6各版本的主要区别

    MySQL 4.1/5.0/5.1/5.5/5.6各版本的主要区别 一.5.0 增加了Stored procedures.Views.Cursors.Triggers.XA transactions的 ...

  9. Leetcode216/39/40/77之回溯解决经典组合问题

    Leetcode216-组合总和三 找出所有相加之和为 n 的 k 个数的组合,且满足下列条件: 只使用数字1到9 每个数字 最多使用一次 返回 所有可能的有效组合的列表 .该列表不能包含相同的组合两 ...

  10. 在网站copy时自带的版权小尾巴以及“复制代码“,可以怎么实现

    前言 每天网上的博客各个领域都会涌现新文章,有时候看到感兴趣的知识就想把某段文字 copy下来 摘录下来,等有时间后慢慢品味 在部分网站上,如果只是复制少量文字,并没有什么不同.但是当我们复制的文字多 ...