【发布时间】:2013-12-18 21:04:40
【问题描述】:
(我正在为此problem 寻找Perl 中的解决方案,因为awk 中的解决方案由于某些原因并不总是有效)。
这是目标的摘要:我有一个文件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脚本不起作用时的边缘情况示例,也许我们可以修复它。 -
不只是改变语言,也许您可以尝试找出
awk解决方案失败的原因。 -
我理解你的意见,但是我的
output.txt有几十个mo,很难调试...