현재 스크립트는 소수점 이하 자릿수가 많은 출력을 제공합니다. 출력이 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