2013-09-22 45 views
1

的數量我已經編碼,其分析文件,並返回不同的結果的分析:GOODBADUnexpected exception :隨後是不同的異常...我makefile運行該分析儀上一組一個一個的文件,並將整個結果放在一個文件中output.txt。所以output.txt看起來如下:腳本列出了所有的異常及發生

file "f1.txt" 
... 
GOOD 
file "f2.txt" 
... 
Unexpected exception : exception1 
... 
Unexpected exception : exception2 
... 

現在我想編寫一個shell腳本summary,總結output.txt,特別是提出了什麼異常,其發生的數名單。它應該喜歡就好:

exception1 : 9 
exception2 : 15 
... 

例外的順序並不重要,(當然,如果是發生數進行排序,這將是更好)...

我知道grep "Unexpected exception" output.txt | wc -l將返回所有異常的發生次數,但是我確實需要知道每次異常引發的發生...

有沒有人知道如何編寫這個summary腳本?

回答

1

您可以使用AWK:

awk -F ' : ' '$1=="Unexpected exception"{a[$2]++} END{for (i in a) print i,a[i]}' output.txt 
1

awk中可能會是你最好的選擇。我強烈建議您查看the GNU Awk User Guide瞭解更多信息,因爲awk在像您這樣的情況下非常強大和有用。

這會做你想要(略多於對方的回答可讀)什麼...

awk '/Unexpected exception/ { for (i = 4; i <= NF; i++) freq[$i]++ } END { for (word in freq) printf "%s : %d\n", word, freq[word] }' output.txt 

哪裏i = 4是您想要使用的字符串的位置($1=Unexpected $2=exception $3=: $4=exception1。試着將其更改爲i = 2並看看你得到了什麼。