我有一个日志文件组成的标题和数字数据组成的相关字符串的数量
This is the benchmarks ns/day for wsp systems
21.473
21.483
21.425
21.548
21.588
21.587
21.522
21.547
21.549
21.487
在日志中,我需要自动添加由AVERAGE =组成的最后一行,并从2-11个字符串上的数字计算平均值。将非常感谢优雅的bash脚本,它将打开日志,循环字符串,并在最后一个字符串中添加平均值!
谢谢!
詹姆斯
发布于 2016-03-16 18:50:21
这个awk一行程序应该可以为您工作:
awk '7;NR>1{t+=$0}END{printf "EVERAGE=%.3f\n",t/(NR-1)}' file
它的用途:
如果行数大于1,则读取一行并打印,如果行数大于1,则将值求和,然后保存到
printf
函数)如果你在你的示例文件上测试它,它会给出:
kent$ awk '7;NR>1{t+=$0}END{printf "AVERAGE=%.3f\n",t/(NR-1)}' f
this is the benchmarks ns/day for wsp systems
21.473
21.483
21.425
21.548
21.588
21.587
21.522
21.547
21.549
21.487
AVERAGE=21.521
发布于 2016-03-16 18:51:51
为此,我将使用awk。
awk '{sum+=$1; print} END{print "AVERAGE=" sum/(NR-1)}' logfile
sum+=$1
将把每个字符串的第一个元素加到一个变量上
END
语句将根据行数(或awk词汇表中的‘NR
’)求平均值
https://stackoverflow.com/questions/36033306
复制相似问题