2017-10-21 5 views
1

私はここで少し失われています。スクリプトの集計出力

私はiBeaconsの存在を検出しようとしています。

私はこのようなデータを出すスクリプトがあります。

F992A0DE-5A63-4BC1-80F9-5F47A53A0C31 1 1 -60 -55 1.09090 1.87003 

私はセミコロンまたはそのような何かを追加することができ、必要なので、もし私が出力を制御することができます。

問題は次のとおりです。私は、スクリプトの出力を集約する必要があります。 最初のフィールドは、検出されたビーコンのUIDを表します。

表示されるすべてのUIDのうち20行を常に取って、4番目の値を集計して平均値を取得したいとします。 この平均値がある値を超える場合は、http要求を送信する必要があります。

私は実際にどのように移動するのか分かりません。 最初に出力をファイルにプッシュする方が良いでしょうか? いくつかのスレッドが見つかりました。これをawkで実現できると思いますが、これは正しい方法ですか?

+0

'最初のフィールドはbeacon'のUIDを表し:あなたはここに最初のフィールドとはどういう意味ですか、'によって分離された第1フィールド - 'またはスペース'?また、私たちに入力と出力を示す – batMan

+0

申し訳ありませんが、最初のフィールドで私はこれを意味します: "F992A0DE-5A63-4BC1-80F9-5F47A53A0C31"パーツはスペースで区切られています – theslash

答えて

1

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 

必要なしきい値を設定します(ここでは変数$thであると仮定)

関連する問題