shell统计常用命令

  1. 工作中需要在日志文件中抓取耗时,每一行中耗时字段的存储形式为
xxxxxxxx time=1:13,2:9,3:21,4:2 xxxxxxxxxxxxxx

目标是抓取所有行中3:XX后面的数字

grep 'time=' log.txt |  grep -Eo '[,3:[0-9]+]' |  awk -F ':'  {print $2}
# -E    用正则表达式查找
# -o    只显示匹配的部分

参考:
https://www.dazhuanlan.com/lingxiran/topics/1481728
https://www.runoob.com/linux/linux-comm-grep.html

  1. 统计某个字段的出现次数
grep  -oP "total_time=1\d\d"  log.txt  | wc -l    #统计“total_time=3xx”字符串的出现行数
# -P    用正则表达式查找
# -o    只显示匹配的部分
  1. 统计匹配到的值的和/平均值
grep  -oP "total_time=1\d\d"  log.txt | awk -F '=' '{sum+=$2} END {print sum}'        # 求和
grep  -oP "total_time=1\d\d"  log.txt | awk -F '=' '{sum+=$2} END {print sum/NR}'  # 求平均 
# (awk) -F 指定分隔符
# NR 行数

你可能感兴趣的:(shell统计常用命令)