awk应用日志分析

需求从日志里面统计一个接口请求耗时

日志里面打印的内容是

log.info("请求xx接口code={},耗时={})

日志分析,直接打印平均数


日志分析
一开始用的方法:
grep 请求xx接口code=xxx,耗时 application-2020-07-22-14.log  >/tmp/couponcount.txt
获取关键日志 包含所需要的字段
grep 耗时= couponcount.txt >> /tmp/cc.txt
提取目标列
awk -F ',' '{print $2}' cc.txt >> time.txt
进一步提取数值
awk -F '=' '{print $2}' time.txt >> hs.txt
统计平均值
cat hs.txt |awk '{sum+=$1} END {print"avg= ",sum/NR}’
升级版本:
cat  awk -F',' '{print $2}' 17.txt |awk -F'=' '{print $2}’  END {print"avg= ",sum/NR}’

可用版本
grep 耗时= couponcount.txt  | awk -F'=' '{print $3}'|awk -F',' '{print $1}' | awk '{sum+=$1} END {print"avg= ",sum/NR}’

最终版 
grep请求xx接口code=xxx,耗时 application-2020-07-22-14.log |  awk -F'=' '{print $3}'|awk -F',' '{print $1}' | awk '{sum+=$1} END {print"avg= ",sum/NR}’

awk -F‘=’ ‘{print $1}’
-F指定分隔符 这里‘=’ 表示使用=等号
‘{print $1}’ 打印第一列 注意awk第一列就是$1 并不是$0,这点要特别注意

举个栗子
有如下文本 test.txt
小明,老王,安吉拉北鼻

awk -F‘,’ ‘{print $1}’ 打印的就是 小明
同理
awk -F‘,’ ‘{print $3}’ 打印的就是 安吉拉北鼻

你可能感兴趣的:(我的笔记)