【问题标题】:BASH/PHP get min/max from multi-column logBASH/PHP 从多列日志中获取最小值/最大值
【发布时间】:2017-08-07 04:35:42
【问题描述】:

好的,我现在有另一个问题,希望是最后一个。我用一些带有树莓派的传感器收集温度。 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 值发出请求,我只想要一个日志文件一天并读取/创建 max/min/使用 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\

有什么想法吗?非常感谢我的低级英语!

【问题讨论】:

    标签: php arrays bash multidimensional-array max


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-15
      • 1970-01-01
      • 2011-08-16
      • 2016-09-02
      • 1970-01-01
      相关资源
      最近更新 更多