BASH / PHP从多列日志中获取最小值/最大值

时间:2017-03-16 06:23:29

标签: php arrays bash multidimensional-array max

好的,我现在有另一个问题,希望是最后一个问题。我用一些带有rasperry pi的传感器收集温度。 bash脚本在白天写日志文件whatever_ $ day.log。它看起来像(日期,时间,传感器1,传感器2,传感器3):

2017-03-16  08:15  27.3  25.4  16.8
2017-03-16  08:30  22.2  23.1  14.2
2017-03-16  08:45  24.1  24.3  14.6
2017-03-16  09:00  26.8  23.0  14.7

同时我知道,如何用PHP获得最小值,最大值和平均值(谢谢!) - 但这仅适用于带有一个列(仅一个温度)的简单日志文件:

$temperatures = file($file, FILE_IGNORE_NEW_LINES);
$min = min($temperatures);
$max = max($temperatures);
$average = array_sum($temperatures) / count($temperatures);

但是我想避免创建几十个日志文件或者为每个传感器和每个max / min / av值发出请求,我只需要一天的一个日志文件并读取/创建最大/最小值/使用Bash或PHP脚本在一天结束时的平均值,并将值保存到另一个日志文件(每月日志,如[eg.: $day $min $max $average [append to >>] $month_sensor1.log]。我使用此值来创建PHPlot图表/图表。

但我不明白,如何按[read whatever_$day.log and collect the second temperatur-value ~ $temperature[2] column and create the max / min / average values and save them into $maximum / $minimum / $average]之类的列读取日志文件等等。我在这里读了一些其他提交的等等,但说实话,我完全迷失了,这对我的小型非程序员大脑来说太大了。 / O \

有什么想法吗?谢谢你的高级和对不起我的低级英语!

1 个答案:

答案 0 :(得分:0)

您的文件格式不适合自动处理。最好使用''或';'作为分隔符。然后你可以使用php中的 split 函数在你可以使用的数组中拆分一行。如果值之间总是有两个空格,则可以使用当前格式,但如果出现任何问题,则会使调试更加困难。