コマンド出力から小数点を削除する必要があります。

コマンド出力から小数点を削除する必要があります。

コマンドトレースに小さな問題があります。平均を求めて取得しようとしていますが、小数点のない出力が必要です。以下は、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"awkgrep

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

感謝の言葉:ここ

関連情報