printf 命令在一行中打印 2 个参数

printf 命令在一行中打印 2 个参数

我们如何使用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)

相关内容