私のコマンドは次のとおりです。アイドル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%