Awk e o formato %42s
printf vem à mente. Aqui está um script simples para você começar. Configurar width[i]
para um valor positivo na cláusula BEGIN
faz com que a coluna tenha a largura especificada, alinhada à esquerda. Se width[i]
for negativo, a coluna i
será alinhada à direita e terá a largura -width[i]
. Esse script não manipula os campos amplos de maneira inteligente, todas as colunas subseqüentes são deslocadas diretamente para essa linha.
awk -F, -vOFS= '
BEGIN {width[1]=-10; width[2]=8;}
{ for (i=1; i<=NF; i++) {$i = sprintf("%*s", width[i], $i)}
print }'
Se você tiver campos numéricos, poderá usar outros formatos printf .
Se você tem o utilitário BSD column
(o Debian envia , Eu não sei sobre outras distribuições Linux), você pode facilmente formatar coisas em colunas com column -t -s ,
. O bom sobre column
é que ele determina a largura da coluna automaticamente. No entanto, não faz formatação à direita; enquanto você pode obtê-lo com algum pós-processamento, não sei se a complexidade vale a pena.
Você pode fazer tudo em Perl. O seu formato formato pode ajudar.
Uma abordagem mais poderosa para a formatação de tabelas com ferramentas comuns do Unix é o tbl
, que é a parte do * roff (o man page formatter) que manipula tabelas. Mas isso também é mais complexo porque você precisa converter a entrada para roff.
Outra ferramenta possível é o w3m , que é bom na renderização de tabelas. Aqui, você teria que converter a entrada em HTML.