Entendo como usar a função printf do awk, mas não quero especificar todos os campos.
Por exemplo, suponha que este seja o meu arquivo:
c1|c2|c3|c4|c5
c6|c7|c8|c9|c10
c11|c12|c13|c14|c15
Quero formatá-lo para que o primeiro campo de cada registro tenha a largura de c11 - a célula mais longa no primeiro campo:
c1 |c2|c3|c4|c5
c6 |c7|c8|c9|c10
c11|c12|c13|c14|c15
Entendo que eu poderia especificar:
awk -F"|" '{printf "%-3s%s%s%s%s\n", $1, $2, $3, $4, $5}' file > newfile
Vamos supor que eu sei o que quero que a largura da primeira coluna seja, mas NÃO sei quantos campos estão no arquivo. Basicamente, quero fazer algo como:
... '{printf "%-3s|", $1}'
... e imprima o restante dos campos no formato original.
sed 's/|/'' '' '' |/;s/\(...\) */\1/'
(aqui adicionar aspas extras para inserir esses 3 espaços como os comentários SE espremer espaços contíguos em um)