今天,需要求得兩個狀態的比率, 在經過痛苦的手動記錄和計算,之後,突然意識到可以用awk,對log文件進行操作。
log 文件: test.log
以下是log 文件中的一部分數據,需要計算 state_2 / (state_2+state_3)
STAT state_1 0
STAT state_2 12345
STAT state_3 23456
STAT state_4 139739
STAT state_1 0
STAT state_2 124656
STAT state_3 185312
STAT state_4 139739
最後寫出的awk命令是:
awk '/state_2 | state_3/ {print $3}' /var/log/test.log |
awk '{if(FNR%2 == 1) state2 = $1;
if(FNR%2 ==0 && (state2+$1) !=0 ){ i++; state3 = $1; sum += state2/(state2+state3)}
}END
{print "avg = ", avg = sum/i}'
不知道還有沒有更簡單的寫法。