awk数学出力を小数点以下2桁に制限する方法

awk数学出力を小数点以下2桁に制限する方法

私のコマンドは次のとおりです。アイドルCPUと使用されているCPUを次の形式で印刷します。 awk出力を小数点以下の2桁に制限したいです。

grep 'cpu ' /proc/stat | awk '{usage=($2+$4)*100/($2+$4+$5)} {free=($5)*100/($2+$3+$4+$5)} END {print "Used Cpu:",usage "%"} {print "Free Cpu:",free "%"}'

出力:

Free Cpu: 98.9588%

Used Cpu: 1.04125%

希望の出力:

Free Cpu: 98.95%

Used Cpu: 1.04%

答え1

いくつかのコードレビュー:

  • awkはgrepの機能を実行できるため、パイプは必要ありません。
  • 信頼性を向上させるために、awkコードに改行を追加してください

たとえば、

awk '$1 == "cpu" {
  printf "Used Cpu: %5.2f%%\n", 100*($2+$4)/($2+$4+$5)
  printf "Free Cpu: %5.2f%%\n", 100*$5/($2+$3+$4+$5)
}' /proc/stat

出力がうまく整列しました。

Used Cpu:  5.34%
Free Cpu: 94.63%

答え2

別のアプローチは出力フォーマットOFMT="%5.2f%%"するフォーマットみんなデジタル出力:

$ awk -v OFMT="%5.2f%%" '
         $1 == "cpu" {
                       print( "Used Cpu: ", 100*($2+$4)/($2+$4+$5) )
                       print( "Free Cpu: ", 100*$5/($2+$3+$4+$5) )
                     }
         ' /proc/stat


Used Cpu:   9.52%
Free Cpu:  90.48%

関連情報