script para converter GB para TB

0

Eu tenho (vários) arquivos como a lista abaixo. Poucos deles têm os valores em TB e alguns arquivos em GB. Agora, se você ver claramente a saída do arquivo, haverá duas linhas com capacidade total e capacidade usadas. Eu posso fazer isso com o awk para adicionar as duas linhas separadamente, mas vejo que algumas estão em GB. Seria possível escrever um script que verificará se os valores estão em GB ou TB, se estão em GB e depois convertidos em TB (1024).

[root@localhost maneesh]# cat server1.txt
Total capacity                   2.0 TB
Capacity used                    735.23 GB
[root@localhost maneesh]#

Basicamente, no final, quero que todos os meus valores sejam apresentados na TB.

Qualquer ajuda sobre isso seria apreciada.

    
por maneeshshetty 30.11.2012 / 06:42

1 resposta

3

Você pode verificar se $4 é GB e divida $3 por 1024, caso esteja. Se o arquivo infil contém:

Total capacity                   2.0 TB
Capacity used                    735.23 GB

Você pode fazer algo parecido com isto (parse.awk):

/Total capacity/ { if($4 == "GB") $3 /= 1024; tot  += $3 }
/Capacity used/  { if($4 == "GB") $3 /= 1024; used += $3 }

END { print "Total: " tot " TB, Used: " used " TB" }'

E se você executar assim:

awk -f parse.awk infile infile

Você recebe:

Total: 4 TB, Used: 1.436 TB
    
por 30.11.2012 / 10:07