特定の平均計算[閉じる]

特定の平均計算[閉じる]

長い変数文字列を含むログがあり、数値から最小、最大、平均を取得しようとしています。

文字列の例

date time from Time: 100 ms to status code: 
date time Time: 1050 ms status code IP
date time IP Time: 2 ms status code destination

「Time:* ms」はすべての行で一定ですが、フィールドの位置は変わります。最大、最小、平均ミリ秒が必要です。

ベストアンサー1

GNU awkの使用FPAT正規表現(文字列)は、gawkに正規表現に一致するテキストに基づいてフィールドを生成するように指示します。"):

awk -v FPAT='Time:[[:blank:][:digit:]]+ms' '
          { split($1, tmp); sum+=tmp[2] }
NR==1     { min=max=tmp[2] }
min>tmp[2]{ min=tmp[2] }
max<tmp[2]{ max=tmp[2] }

END{ print min, max, sum/NR }' infile

出力;

2 1050 384

おすすめ記事