[Linux] awk统计平均值、最大值和最小值 |
您所在的位置:网站首页 › awk打印包含关键字的列 › [Linux] awk统计平均值、最大值和最小值 |
1.已提取出一列数处理 假设data.txt文件有一列数 求平均值,总和除以行数 awk '{sum += $1} END {printf "NR = %d,Average = %3.3f\n",NR,sum/NR}' data.txt求最大值,初始值给0,找到更大的数替换 awk 'BEGIN{ max = 0} {if ($1 > max) max = $1; fi} END{printf "Max = %.1f\n",max}' data求最小值,初始值给一个较大的数,找到更小的数替换 awk 'BEGIN{min = 65535} {if ($1 < min) min = $1;fi} END{printf "Min = %.1f\n",min}' data参考资料: shell脚本之awk命令——按列求平均值、最大值、最小值 https://blog.csdn.net/xb_2015/article/details/120050869 考虑一个性能测试环境,要保证每周期数据及时处理,则需要统计该路径下所有统计文件中记录的Decoder模块每个周期的处理时长(Decoder-Duration)的平均值、最大值、和最小值 Statistics_.txt 文件内容样式如下 # Decoder-ROP,Decoder-Duration,CPU% Decoder-202304251315,6.85,18.65% # Reporter-ROP,Reporter-Duration,CPU% Reporter-202304251315,6.80,5.45%分析步骤如下: (1)找出对应的行 [root@xxx Report]# grep Decoder- ./Statistics*.txt | grep -v Decoder-ROP | head -4 ./Statistics_202304230900.txt: Decoder-202304230900,6.97,18.99% ./Statistics_202304230915.txt: Decoder-202304230915,6.87,18.81% ./Statistics_202304230930.txt: Decoder-202304230930,6.89,18.87% ./Statistics_202304230945.txt: Decoder-202304230945,6.86,18.73%(2)取出空格分隔的第二段 [root@xxx Report]# grep Decoder- ./Statistics*.txt | grep -v Decoder-ROP | awk '{print $2}' | head -4 Decoder-202304230900,6.97,18.99% Decoder-202304230915,6.87,18.81% Decoder-202304230930,6.89,18.87% Decoder-202304230945,6.86,18.73%(3)取出逗号分隔的第二段(-F, #指定分隔符为逗号) [root@xxx Report]# grep Decoder- ./Statistics*.txt | grep -v Decoder-ROP | awk '{print $2}' | awk -F, '{print $2}' | head -4 6.97 6.87 6.89 6.86(4) 计算平均值、最大值、最小值 平均值 [root@xxx Report]# grep Decoder- ./Statistics*.txt | grep -v Decoder-ROP | awk '{print $2}' | awk -F, '{print $2}' | awk '{sum += $1} END {printf "NR = %d,Average = %3.2f\n",NR,sum/NR}' NR = 312,Average = 6.90 最大值 [root@xxx Report]# grep Decoder- ./Statistics*.txt | grep -v Decoder-ROP | awk '{print $2}' | awk -F, '{print $2}' | awk 'BEGIN{ max = 0} {if ($1 > max) max = $1; fi} END{printf "Max = %.1f\n",max}' Max = 9.8 最小值 [root@xxx Report]# grep Decoder- ./Statistics*.txt | grep -v Decoder-ROP | awk '{print $2}' | awk -F, '{print $2}' | awk 'BEGIN{min = 65535} {if ($1 < min) min = $1;fi} END{printf "Min = %.1f\n",min}' Min = 3.92.数据文件包含多列数 只要把上述的 $1(第一列) 换成对应的列号即可,考虑以下文件 test.txt 1727,908,1327,4646407,5.38% 1610,908,1335,4673779,5.41% 1580,908,1319,4619004,5.35% 1638,908,1323,4631397,5.36% 1719,908,1322,4628677,5.36% 1685,908,1329,4654044,5.39% 1707,908,1326,4643499,5.37% 1985,908,1328,4651098,5.38% 1993,908,1331,4659000,5.39% 1679,908,1333,4667734,5.40% 1777,908,1338,4683686,5.42% 1865,908,1328,4651117,5.38%现在求第4列的最大值 [root@mr32 Report]# awk -F, 'BEGIN {max = 0} {if ($4 > max) max=$4} END {print "Max=", max}' test.txt Max= 4683686 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |