使用场景:
记录服务器调用第三方接口的耗时问题;日志返回格式:第三方接口耗时:129ms
需求,查出耗时大于100ms 共有多少条数据
cat /home/work/log4j/life-proxy/2020-12-28/total* |awk -F '第三方接口耗时:' '{print $2}' | awk -F 'ms' '{print $1}' |awk '$NF>100{print $NF}' |wc -l
命令解释 cat /home/work/log4j/life-proxy/2020-12-28/total*
查看total这个文件的内容
命令解释:|awk -F '第三方接口耗时:' '{print $2}'
输出total文件内容后,1以关键字[第三方接口耗时:]进行切割,切割后:的结果为:“三方接口耗时:”,“129ms” {print $2} 打印第二部分,也就是拿到了129ms字段
命令解释:| awk -F 'ms' '{print $1}'
上一步拿到了129ms字段后,在将这个字段切割,这样就被切割成了“129”,“ms” {print $1}打印第一部分,也就拿到了129字段
命令解释:|awk '$NF>100{print $NF}'
上一步拿到了129字段,此时$NF 就可以获取到129数字了, 然后和100对比条件成立,则输出$NF , $NF 的意思是取一行数据中最后一列的那个值,所以说如果我们的日志结构是129结尾的话,只需要通过awk -F 切割一次 就可以获取到129数字了,
命令解释:|wc -l
统计行数的命令
附加:
如果你的日志格式是生产环境的话,比如json格式存储,也可以使用这种awk 文本处理方式,只是要根据你的环境来区分如何切割,明白了切割方式就可以了。