[FUG-BR] [Off] formatador de tabela para shell

Carlos Eduardo G. Carvalho (Cartola) cartoleba em gmail.com
Sábado Janeiro 22 15:32:58 BRST 2011


Mas você não sabe quais os tamanhos máximos das colunas? O awk é uma
linguagem muito apropriada para tratamento de strings. E pelo exemplo que
você passou a coisa parece ser bem regular. Se não for vc pode fazer uma
passagem para contar a largura máxima de cada coluna e usá-la. Daria mais
trabalho, claro.

Sem contar, assumindo que sabe os limites:

teste.awk
---------------------------------------------------------
/Ano/ {

printf("+------+---------+---------+---------+---------+---------+\n");
        printf("|%5s |%8s |%8s |%8s |%8s |%8s |\n",$1,$2,$3,$4,$5,$6);

printf("+------+---------+---------+---------+---------+---------+\n");
        }
/^[0-9]/ {
        printf("|%5s |%8s |%8s |%8s |%8s |%8s |\n",$1,$2,$3,$4,$5,$6);
        }
END {

printf("+------+---------+---------+---------+---------+---------+\n");
        }
---------------------------------------------------------

teste.csv (usando seu exemplo e vírgula como separador)
---------------------------------------------------------
Ano,IPCA,IGPM,TR,Poup,FGTS
2007,4.4573,7.7463,1.4453,7.7022,5.1582
2008,5.9023,9.8054,1.6348,7.9037,5.3547
2009,4.3120,-1.7123,0.7090,6.9204,4.3949
2010,5.9091,11.3220,0.6888,6.8992,4.3739
---------------------------------------------------------

Execução:

$ awk -F "," -f teste.awk teste.csv
+------+---------+---------+---------+---------+---------+
|  Ano |    IPCA |    IGPM |      TR |    Poup |    FGTS |
+------+---------+---------+---------+---------+---------+
| 2007 |  4.4573 |  7.7463 |  1.4453 |  7.7022 |  5.1582 |
| 2008 |  5.9023 |  9.8054 |  1.6348 |  7.9037 |  5.3547 |
| 2009 |  4.3120 | -1.7123 |  0.7090 |  6.9204 |  4.3949 |
| 2010 |  5.9091 | 11.3220 |  0.6888 |  6.8992 |  4.3739 |
+------+---------+---------+---------+---------+---------+


Abs, Cartola.

Em 22 de janeiro de 2011 11:22, Cleyton Agapito <cragapito em gmail.com>escreveu:

> Em 22 de janeiro de 2011 10:44, Tiago Ribeiro <shasty em gmail.com> escreveu:
> > Já tentou o awk?
> >
>
> Pois é, o problema são colunas de tamanho diferente, quantidade de
> linhas e colunas, separação de cabeçalho, etc.  O problema maior no
> caso é alinhamento.
>
> O que encontrei mais próximo disso foi o texproc/align, outra é
> importar no mysql e obter de lá.
>
> De qualquer forma valeu a força...
>
> Abração.
> -------------------------
> Histórico: http://www.fug.com.br/historico/html/freebsd/
> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
>


Mais detalhes sobre a lista de discussão freebsd