Se a entrada estiver algumas vezes em GB, algumas vezes em TB, eu escreveria uma função para lidar com ambos os casos ( funciona no manual do GNU awk ):
#!/usr/bin/awk -f
function num2gb(n) {
if (n ~ /T$/) return n * 1024; # if TB, scale
return n * 1; # else assume GB. * 1 converts to number
}
{ printf "%.2f G\n", num2gb($1) } # print, as an example
Em seguida, você pode usar a função ao ler os números da entrada para obter os números em GB:
/HDD Total/ { hdd_total = num2gb($NF) }
/HDD Used/ { hdd_used = num2gb($NF) }
Adicione casos para MB
e PB
, se necessário, e verifique se o programa que produz sua entrada pensa em poderes de 1024
ou potências de 1000
.
Ao produzir, você pode escolher o multiplicador como quiser.
O texto acima seria um script awk
independente, na linha de comando você faria algo como
$ somecmd | awk 'function num2gb(n) { if (n ~ /T$/) return n * 1024; return n*1; }
/some pattern/ { some action }
/other pattern/ { something with num2gb($n) ... } '