![awk 함수에서 GB 값을 TB로 변환](https://linux55.com/image/122894/awk%20%ED%95%A8%EC%88%98%EC%97%90%EC%84%9C%20GB%20%EA%B0%92%EC%9D%84%20TB%EB%A1%9C%20%EB%B3%80%ED%99%98.png)
GB 값을 TB 값으로 변환하려고 합니다. 코드에 빠진 내용이 있습니까?
샘플 출력
isi status -q | grep -e "^Size" -e "^Used" -e "^Avail"
Size: 501T (5041T Raw) 19T (19T Raw)
Used: 440G (80%) 1.4T(7%)
Avail: 61T (12%) 18T (93%)
출력이 필요함경우에 따라 Used
값이 GB 단위일 수 있으며 TB로 변환해야 합니다.
Size: 501T
Used: 0.39T
Avail: 61T
이것을 시도했지만 예상한 결과를 얻지 못했습니다.
isi status -q | grep -e "^Size" -e "^Used" -e "^Avail" | awk '{print $1 $2}' | awk 'function num2gb(n) { if (n ~ /T$/) return n / 1; return n / 14; }
/Size:/ { size=$NF }
/Used:/ { used=num2gb($NF) }
END {
print size
print "used=" used }'
답변1
나는 당신의 산수를 이해하지 못하지만 아마도 이런 것일 수도 있습니다.
awk '/^(Size|Used|Avail):/ {
$2 = $2 ~ /G$/ ? sprintf("%.2fT", ($2+0)/1024) : $2;
print $1, $2;
}' OFS='\t' file