- 工作中需要在日志文件中抓取耗時(shí)丹弱,每一行中耗時(shí)字段的存儲(chǔ)形式為
xxxxxxxx time=1:13,2:9,3:21,4:2 xxxxxxxxxxxxxx
目標(biāo)是抓取所有行中3:XX后面的數(shù)字
grep 'time=' log.txt | grep -Eo '[,3:[0-9]+]' | awk -F ':' {print $2}
# -E 用正則表達(dá)式查找
# -o 只顯示匹配的部分
參考:
https://www.dazhuanlan.com/lingxiran/topics/1481728
https://www.runoob.com/linux/linux-comm-grep.html
- 統(tǒng)計(jì)某個(gè)字段的出現(xiàn)次數(shù)
grep -oP "total_time=1\d\d" log.txt | wc -l #統(tǒng)計(jì)“total_time=3xx”字符串的出現(xiàn)行數(shù)
# -P 用正則表達(dá)式查找
# -o 只顯示匹配的部分
- 統(tǒng)計(jì)匹配到的值的和/平均值
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 行數(shù)