(我正在尋找這個problem的Perl解決方案,因爲awk
中的解決方案由於某些原因並不總是有效)。perl腳本列出所有例外情況及其發生次數
這裏是目標的摘要:我有一個文件output.txt
,它包含Unexpected exception :
後面是不同的例外......舉例來說,它看起來像
...
Unexpected exception : exception1
...
Unexpected exception : exception2
...
現在我想編寫一個shell腳本summary
其中總結了output.txt
,特別列出了引發的異常和它們的發生次數。它應該喜歡就好:
exception1 : 9
exception2 : 15
...
例外的順序並不重要,(當然,如果是發生數進行排序,這將是更好)...
一個awk
解決方案是:
awk -F ' : ' '$1=="Unexpected exception"{a[$2]++} END{for (i in a) print " ", i,a[i]}' $1
但我不知道爲什麼有時它有效,有時它不。這就是爲什麼我要在Perl中尋找解決方案。有人提出
perl -lne '$a{$1}++ if (/^(Unexpected exception) : (.*?)\s*$/); END { for $i (keys %a) { print " ", $i, $a{$i} } }' $1
(見here),但它返回Unexpected exception177
其中177
是例外的總數。這不是我想要的。
任何人都可以在Perl中提出一個好的解決方案嗎?
根據您的描述,這在awk中完全可行。如果你給出了'awk'腳本不起作用的邊緣情況的例子,那麼我們可以修復它。 – janos
而不是僅僅改變語言,也許你可以試着找出awk解決方案爲什麼會突破。 – ThisSuitIsBlackNot
我瞭解你的意見,但我的'output.txt'有幾十個Mo,很難調試...... – SoftTimur