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