AWK를 소수점 한자리까지

AWK를 소수점 한자리까지

현재 스크립트는 소수점 이하 자릿수가 많은 출력을 제공합니다. 출력이 1개의 위치만 차지하도록 하는 방법이 있습니까?

# cat sample
HDD Used: 15.0223T
HDD Total: 55.9520T

# cat sample | awk ' /HDD Total/ { hdd_total=$NF }
      /HDD Used/ { hdd_used=$NF }
      END {
        used=hdd_total-hdd_used
        print "cal =" used}'

전류 출력

cal =40.9297

원하는 출력
cal =40.9 ---> 소수점 한자리만 유지하세요

이에 오류가 발생했습니다.

# isi storagepool list -v| grep -i 'HDD Total:' | awk '{print "HDD Total=%.1f", $NF -1 " TB" }'
HDD Total=%.1f 54.952 TB
#cat isistorage1 
7.332T     n/a (R)   13.01% (T)

# cat isistorage1 |  awk '{ print "Snapshot USED=", $1}'
Snapshot USED= 7.332T

답변1

printf "cal =%.1f\n", used인쇄 유형 수정자 컨트롤과 영역이 있으므로 사용할 수 있습니다 .

이것이 의미하는 바는 float 뒤에 소수점 1자리만 인쇄된다는 것 .1f입니다. 이를 원하는 소수점 이하 자릿수로 변경할 수 있습니다.

답변2

이를 설정하여 사용할 부동 소수점 변환을 awk에 알릴 수 있습니다. CONVFMT기본값은 입니다 %.6g. 예를 들면 다음과 같습니다.

cat sample | awk -v CONVFMT='%.1f' '
/HDD Total/ { hdd_total = $NF }
/HDD Used/  { hdd_used  = $NF }
END {
  used=hdd_total-hdd_used
  print "cal = " used
}'

산출:

cal = 40.9

관련 정보