コマンドトレースに小さな問題があります。平均を求めて取得しようとしていますが、小数点のない出力が必要です。以下は、grep条件がほとんどないファイルから読み取りを試みるコマンド例です。
grep "#COMPLETE#" Requestlog1.log | grep "#O#" | awk -F"#" '{ sum += $NF; n++ } END { if (n > 0) print sum / n; }'
出力を受け取る672.714
実際の答えは次のように丸めなければなりません。673
答え1
また、次のようprint
にすることができます。printf "%.0f\n"
awk
grep
awk -F"#" '
/#COMPLETE#/ && /#O#/ {sum += $NF; n++}
END {if (n > 0) printf "%.0f\n", sum / n}'
次のように、最も近い整数(x.3からx、x.7からx + 1(負の数はx-1)、x.5からx、またはx + 1(負の数はx-1))に丸められます。x偶数認知奇数認知)
答え2
にはceil
関数はありませんが、awk
次のように定義できます。
... | awk -F"#" 'function ceil(x){return (x == int(x)) ? x : int(x)+1} { sum += $NF; n++ } END { if (n > 0) print ceil(sum / n); }'
他の言語でもint()
同様の変換が適用されることに注意してください。floor
感謝の言葉:ここ