使用 cat 及 awk 命令过滤日志文件,求和、求平均值、最大值、最小值

发布时间 2023-06-09 14:11:59作者: Nihaorz

1、cat 查看日志文件

$ cat all.log

 

2、根据程序打印日志的位置过滤日志条目

cat all.log | grep -a 'ESIndexAggregationTask.java:254'

 

3、使用 awk 定位到日志数值位置

本轮总计滚动查询 2 次,总计返回数据 62212 条,按空格 split,62212 是 11 个位置,所以用 awk '{print $11}' 能够取得

cat all.log | grep -a 'ESIndexAggregationTask.java:254' | awk '{print $11}'

 

4、使用 awk 求和、求平均值、最大值、最小值

求和:

cat all.log | grep -a 'ESIndexAggregationTask.java:254' | awk '{sum+=$11} END {print "Sum=", sum}'

求平均值:

cat all.log | grep -a 'ESIndexAggregationTask.java:254' | awk '{sum+=$11} END {print "Average=", sum/NR}'

求最大值(max 先给一个足够小的值):

cat all.log | grep -a 'ESIndexAggregationTask.java:254' | awk 'BEGIN {max = 0} {if ($1>max) max=$11 fi} END {print "Max=", max}'

求最小值(min 先给一个足够大的值):

cat all.log | grep -a 'ESIndexAggregationTask.java:254' | awk 'BEGIN {min = 99999999} {if ($1<min) min=$11 fi} END {print "Min=", min}'

 

参考链接:https://blog.csdn.net/weixin_49129782/article/details/123371159