以下に示すように、数値リストを含むファイルがあります。
4.90889
4.92681
4.99236
5.29358
5.3115
5.37706
5.9354
5.95332
6.01888
最初の数字から3番目の数字を引いた後、次の3行ブロックを再帰的に処理し、結果を保存して平均化する必要があります。私はawkで平均を求める方法を知っていますが、初めてするときは迷子になります。
上記の数字を使用すると、次のようになります。
4.99236 - 4.90889 = 0.08347
5.37706 - 5.29358 = 0.08348
6.01888 - 5.9354 = 0.08348
(0.08347 + 0.08348 + 0.08348)/3 = 0,0834766666667
答え1
いくつかのモジュロタスクの場合:
awk '
FNR%3 == 1 {last = $0}
FNR%3 == 0 {sum += $0 - last; n++}
END {print (n > 0 ? sum/n : 0)}
' file