Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 脚本的聚合输出_Linux_Shell_Awk - Fatal编程技术网

Linux 脚本的聚合输出

Linux 脚本的聚合输出,linux,shell,awk,Linux,Shell,Awk,所以,我有点迷路了 我在试着检测出iBeacons的存在 我有一个脚本,它输出如下数据: F992A0DE-5A63-4BC1-80F9-5F47A53A0C31 1 1 -60 -55 1.09090 1.87003 我可以控制输出,以便在必要时添加分号或类似的内容 问题是:我需要聚合脚本的输出。 第一个字段表示检测到的信标的UID 我希望总是对每个出现的UID取20行,将第4个值相加,得到一个平均值。 如果此平均值超过某个值,则应发送http请求 我真的不知道如何继续前进。 首先将输出推送

所以,我有点迷路了

我在试着检测出iBeacons的存在

我有一个脚本,它输出如下数据:

F992A0DE-5A63-4BC1-80F9-5F47A53A0C31 1 1 -60 -55 1.09090 1.87003
我可以控制输出,以便在必要时添加分号或类似的内容

问题是:我需要聚合脚本的输出。 第一个字段表示检测到的信标的UID

我希望总是对每个出现的UID取20行,将第4个值相加,得到一个平均值。 如果此平均值超过某个值,则应发送http请求

我真的不知道如何继续前进。 首先将输出推送到一个文件会更好吗?
我找到了一些线程,认为我可以用awk完成这项任务,这是正确的方法吗?

awk
来拯救

像这样的?没有测试

awk -v threshold=$th 'c[$1]<20 {s[$1]+=$4; c[$1]++}
                      END      {for(k in a) 
                                  {avg = s[$1]/c[$1];
                                   if(avg>threshold) print k,a[k]}}' file 
awk-v threshold=$th'c[$1]threshold)打印k,一个[k]}文件

设置所需的阈值(此处假定为变量
$th

第一个字段表示信标的UID
:这里的第一个字段是什么意思,第一个字段由
-
或空格“`”分隔?另外,向我们展示输入和输出对不起,第一个字段的意思是:“F992A0DE-5A63-4BC1-80F9-5F47A53A0C31”各部分之间用空格隔开