[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