2016-01-11 18 views
1

我有一個這樣的輸入日誌文件:平均計算第二列的基礎上,第一個山坳中的shell腳本

CLASS:CLASS1, CREATE_TIME:30-Dec-2015 00:00:06, VALID_AFTER_TIME:30-Dec-2015 00:00:12, EVAL_TIME:30-Dec-2015 00:00:12, SUCCESS:true, TIME_TAKEN:1842 
CLASS:CLASS1, CREATE_TIME:30-Dec-2015 00:00:06, VALID_AFTER_TIME:30-Dec-2015 00:00:12, EVAL_TIME:30-Dec-2015 00:00:12, SUCCESS:true, TIME_TAKEN:1842 
CLASS:CLASS2, CREATE_TIME:30-Dec-2015 00:00:06, VALID_AFTER_TIME:30-Dec-2015 00:00:12, EVAL_TIME:30-Dec-2015 00:00:12, SUCCESS:true, TIME_TAKEN:1842 
CLASS:CLASS1, CREATE_TIME:30-Dec-2015 00:00:06, VALID_AFTER_TIME:30-Dec-2015 00:00:12, EVAL_TIME:30-Dec-2015 00:00:12, SUCCESS:true, TIME_TAKEN:1842 
CLASS:CLASS2, CREATE_TIME:30-Dec-2015 00:00:06, VALID_AFTER_TIME:30-Dec-2015 00:00:12, EVAL_TIME:30-Dec-2015 00:00:12, SUCCESS:true, TIME_TAKEN:1842 
CLASS:CLASS1, CREATE_TIME:30-Dec-2015 00:00:06, VALID_AFTER_TIME:30-Dec-2015 00:00:12, EVAL_TIME:30-Dec-2015 00:00:12, SUCCESS:true, TIME_TAKEN:1842 

我想計算每一類所需的平均時間。 比如我想輸出這樣的:

CLASS1 5.5 
CLASS2 13 

我使用以下提取的時間,但無法計算的魅力。

awk -F'[,:]' '{print $25 " " $41;}' modified_01.log | sort 

輸出:

CLASS:CLASS1 10 
CLASS:CLASS1 1 
CLASS:CLASS2 9 
CLASS:CLASS1 10 
CLASS:CLASS2 17 
CLASS:CLASS1 1 
+2

關聯數組,關於這裏的數千個問題詢問同樣的事情。 – 123

回答

2

管你的輸出到這個AWK:

awk -F '[: ]' '{a[$2]++; s[$2]+=$3} END{ 
     for (i in s) printf "%s%s%.1f\n", i, OFS, s[i]/a[i]}' 
CLASS1 5.5 
CLASS2 13.0 
0

管輸入到以下命令。然後你會得到所需的結果。

awk '{if(a[$1]){a[$1]=a[$1]+$2; count[$1]=count[$1]+1}else {a[$1]=$2;count[$1]=1}}END{for (i in a)print i"\t"a[i]/count[i];}' | cut -f2 -d":" 
相關問題