Precisa de saída em um bom formato usando o shell script

1

Eu tenho um arquivo, PoolReport.txt . Aqui estão alguns dados de amostra:

Thu, Aug 27, 2015 7:56:29 AM
PoolName,Total GB,Used GB ,Available GB ,Percent Full
Oracle-RAID10,6432.539,6179.295,253.244,96.063
VM_File,45210.379,40726.389,4483.991,90.082
Oracle-RAID5,15025.039,12289.707,2735.332,81.795

Eu preciso disso no seguinte formato.

Thu, Aug 27, 2015 7:56:29 AM
PoolName       Total GB   Used GB    Available GB   Percent Full
Oracle-RAID10  6432.539   6179.295   253.244        96.063
VM_File        45210.379  40726.389  4483.991       90.082
Oracle-RAID5   15025.039  12289.707  2735.332       81.795

Consegui produzir um formato melhor (como abaixo), mas não satisfaz as necessidades.

awk -F "," '{print $1"\t" $2"\t" $3"\t" $4"\t" $5"\t" }' PoolReport.txt 
Thu      Aug 27  2015 7:56:29 AM
PoolName        Total GB         Used GB        Available GB    Percent Full
Oracle-RAID10   6432.539        6179.295        253.244 96.063
VM_File 45210.379       40726.389       4483.991        90.082
Oracle-RAID5    15025.039       12289.707       2735.332        81.795
    
por lejy philip 28.08.2015 / 16:14

2 respostas

5

Não tenho certeza se entendi sua pergunta corretamente, mas acredito que você queira alinhar as colunas. Se for esse o caso, o comando column é útil:

column -s, -t file

Saída:

Thu             Aug 27     2015 7:56:29 AM
PoolName       Total GB    Used GB          Available GB   Percent Full
Oracle-RAID10  6432.539   6179.295          253.244        96.063
VM_File        45210.379  40726.389         4483.991       90.082
Oracle-RAID5   15025.039  12289.707         2735.332       81.795

Ou, se você quiser manter a primeira linha como está, então

{ head -n 1; column -s, -t; } <file

Saída:

Thu, Aug 27, 2015 7:56:29 AM
PoolName       Total GB    Used GB   Available GB   Percent Full
Oracle-RAID10  6432.539   6179.295   253.244        96.063
VM_File        45210.379  40726.389  4483.991       90.082
Oracle-RAID5   15025.039  12289.707  2735.332       81.795

Veja man column para possíveis opções que você pode querer adicionar para ajustar a saída.

    
por 28.08.2015 / 17:39
0

Altere todas as ocorrências de , para {tab} , exceto na primeira linha:

sed '2,$s/ *, */\t/g' PoolReport.txt

OU formate os campos com separadores de separadores, exceto na primeira linha:

awk -F, 'NR==1;NR>1{OFS="\t"; print $1,$2,$3,$4,$5}' PoolReport.txt

Saída para qualquer uma das instâncias:

Thu, Aug 27, 2015 7:56:29 AM
PoolName        Total GB        Used GB Available GB    Percent Full
Oracle-RAID10   6432.539        6179.295        253.244 96.063
VM_File 45210.379       40726.389       4483.991        90.082
 Oracle-RAID5    15025.039       12289.707       2735.332        81.795
    
por 28.08.2015 / 17:17