awk 수학 출력을 소수점 이하 두 자리로 제한하는 방법

awk 수학 출력을 소수점 이하 두 자리로 제한하는 방법

내 명령은 다음과 같습니다. 유휴 CPU와 사용된 CPU를 다음 형식으로 인쇄합니다. awk 출력을 소수점 이하 두 자리로 제한하고 싶습니다.

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%

관련 정보