printf comando imprimindo 2 parâmetros em uma linha

0

Como podemos usar printf para mostrar isso abaixo da saída com sinal de porcentagem

used1=64.1
printf "USED =%.1f\n", used1 " %"

Requer saída

output is USED=64.1%

Abaixo está o script real com o 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}'
    
por Mongrel 13.09.2017 / 06:13

1 resposta

3

O % para printf é um caractere especial que define a formatação de impressão, você precisa escapar com outro % em printf se quiser literal % na saída e movê-lo melhor para dentro da primeira área de controle . veja man printf

printf("USED =%.1f %%\n", used1)

Ou você pode citar como abaixo.

printf("USED =%.1f '%'\n", used1)

Ou você pode imprimir isso como c haracter usando %c .

printf("USED =%.1f %c\n", used1, "%")

Ou seu código ASCII.

printf("USED =%.1f %c\n", used1, 37)
    
por 13.09.2017 / 06:17

Tags