我想在一小时内计算第3列的平均值和峰值(在第2列中提到)。请帮忙解决。
27022019 2:00:01 327022019 2:05:01 1427022019 2:10:01 …
$ awk 'BEGIN { FS="( +|:)" } { # $2==2 { # to limit to an hour s[$2]+=$NF # sum the values c[$2]++ # count the values p[$2]=(p[$2]==""||p[$2]<$NF?$NF:p[$2]) # get peak val } END { for(i in s) # for all entries print i,s[i]/c[i],p[i] # print hour, average and peak }' file
输出:
2 12.4167 22
$2 ~ /^$i/ 永远不会是真的,所以第一个awk命令不能产生任何输出,所以你的第二个脚本在其END部分的FNR总是为0,因此除以零错误。
$2 ~ /^$i/
有关在awk脚本中访问shell变量值的各种方法,请参阅 http://cfajohnson.com/shell/cus-faq-2.html#Q24 但在您的代码中,您可以这样做:
awk -v i="$i" '$2 ~ ("^"i)'`