Entiendo cómo usar la función printf de awk, pero no quiero especificar cada campo.
Por ejemplo, suponga que este es mi archivo:
c1|c2|c3|c4|c5
c6|c7|c8|c9|c10
c11|c12|c13|c14|c15
Quiero formatearlo para que el primer campo de cada registro tenga el ancho de c11, la celda más larga en el primer campo:
c1 |c2|c3|c4|c5
c6 |c7|c8|c9|c10
c11|c12|c13|c14|c15
Entiendo que podría especificar:
awk -F"|" '{printf "%-3s%s%s%s%s\n", $1, $2, $3, $4, $5}' file > newfile
Supongamos que sé cuál quiero que sea el ancho de la primera columna, pero NO sé cuántos campos hay en el archivo. Básicamente quiero hacer algo como:
... '{printf "%-3s|", $1}'
... y luego imprima el resto de los campos en su formato original.
sed 's/|/'' '' '' |/;s/\(...\) */\1/'
(aquí agregando citas adicionales para insertar esos 3 espacios a medida que los comentarios de SE exprimen espacios contiguos en uno)