我们如何使用printf
百分号来显示下面的输出
used1=64.1
printf "USED =%.1f\n", used1 " %"
需要输出
output is USED=64.1%
下面是 awk 的实际脚本
isi storagepool list -v |awk 'function num2gb(n) { if (n ~ /T$/) return n / 1; return n / 1024; }
/Requested Protection:/ { parity=substr($NF,length($NF)-1,1) }
/Nodes:/ { nodes=$NF }
/HDD Total/ { hdd_total=$NF }
/HDD Used/ { hdd_used=num2gb($NF) }
END {
multiplier=nodes-parity
total=hdd_total/nodes*multiplier
used=hdd_used/nodes
eu=used*multiplier*0.8
et=total*0.8
used1=eu/et*100
print "parity =" parity
print "NodeNumber =" nodes
printf ("Total =%.1f\n", total, TB);
printf "Effective Total volume =%.1f\n", total*0.8, " TB"
printf "USED =%.1f\n", used1 " %"
printf "Effective used=%.1f\n", used*multiplier*0.8, " TB"
printf "Available volume=%.1f\n", (hdd_totalhdd_used)/nodes*multiplier*0.8, " TB"
printf "HDD Total=%.1f\n", hdd_total}'
答案1
for%
是定义打印格式的特殊字符,如果您想在输出中使用文字并最好将其移到第一个控制区域内,则printf
需要用另一个 in 对其进行转义%
。看printf
%
人打印
printf("USED =%.1f %%\n", used1)
或者您可以单引号它,如下所示。
printf("USED =%.1f '%'\n", used1)
或者你可以将其打印为C字符使用%c
.
printf("USED =%.1f %c\n", used1, "%")
或者用它的 ASCII 代码代替。
printf("USED =%.1f %c\n", used1, 37)