如何使用awk或perl处理此文件?
我想处理一些日志文件,其格式如下:如何使用awk或perl处理此文件?,perl,awk,Perl,Awk,我想处理一些日志文件,其格式如下: <itemA> <num> <itemB> <num> <itemC> <num> 我想得到一个包含以下信息的摘要 对于每个项目,我想知道字段的范围和平均值 很明显,你可以手工统计,但是…为什么要麻烦呢 很明显,你可以手工统计,但是……何必麻烦呢?我同意赛斯的观点,更喜欢他的答案。以下是Awk中的手动解决方案,用于学习: #!/usr/bin/awk -f #invok
<itemA> <num>
<itemB> <num>
<itemC> <num>
我想得到一个包含以下信息的摘要
对于每个项目,我想知道字段的范围和平均值
很明显,你可以手工统计,但是…为什么要麻烦呢
很明显,你可以手工统计,但是……何必麻烦呢?我同意赛斯的观点,更喜欢他的答案。以下是Awk中的手动解决方案,用于学习:
#!/usr/bin/awk -f
#invoke with: < infile stats.awk
{
i = $1; v = $2;
count[i]++;
sum[i] += v;
if (v > max[i] || count[i] == 1) { max[i] = v };
if (v < min[i] || count[i] == 1) { min[i] = v };
}
END {
for (i in count) {
print i " range: " min[i] ".." max[i] " avg: " sum[i] / count[i]
};
}
我同意赛斯的观点,更喜欢他的回答。以下是Awk中的手动解决方案,用于学习:
#!/usr/bin/awk -f
#invoke with: < infile stats.awk
{
i = $1; v = $2;
count[i]++;
sum[i] += v;
if (v > max[i] || count[i] == 1) { max[i] = v };
if (v < min[i] || count[i] == 1) { min[i] = v };
}
END {
for (i in count) {
print i " range: " min[i] ".." max[i] " avg: " sum[i] / count[i]
};
}
谢谢你的提示。然而,push语句旁边的paren有一个拼写错误-应该是push@{$items{$a}},$b;这样做:推{$items{$a}},$b ;;谢谢你的提示。然而,push语句旁边的paren有一个拼写错误-应该是push@{$items{$a}},$b;这样做:推{$items{$a}},$b ;;