awkを使用して最後のnゲームの平均を計算します。

awkを使用して最後のnゲームの平均を計算します。

私のファイルがますます大きくなっています。その間、私のサポートプロセスのログを書きます。そのファイルには、次のように「Speed」ログがあります。

(some text)
speed= 1x
(some text)
speed= 1x
(some text)
speed= 1x
(some text)
speed= 0.9x
..
..
(some text)
speed= 0.8x
(some text)

平均速度を得るために以下のコードを試しました。

 awk '/speed/ {gsub("x","");print $2}' $PROCESS_LOG_FILE | awk -F : '{sum+=$1} END {print sum/NR}'

最近120項目の平均を取得できますか? grepとtailを使ってみましたが、ファイルが増え続けて時間がかかります。

ベストアンサー1

多少無理があるかもしれませんが、tac一時lseekファイルを介して必要な時点を定義し、120の速度に達するまでそこで逆さまに作業します。

tac file | awk '/speed/ {SUM += $2; if (++C == 120) {print SUM/C; exit}}'

または、パターンが120回未満で発生する可能性がある入力を処理します。

tac file | awk '/speed/ {SUM += $2; if (++C == 120) exit}
                END {if (C) print SUM/C}'

おすすめ記事