Capisco come usare la funzione printf di awk, ma non voglio specificare tutti i campi.
Ad esempio, supponiamo che questo sia il mio file:
c1|c2|c3|c4|c5
c6|c7|c8|c9|c10
c11|c12|c13|c14|c15
Voglio formattarlo in modo che il primo campo di ogni record sia la larghezza di c11 - la cella più lunga nel primo campo:
c1 |c2|c3|c4|c5
c6 |c7|c8|c9|c10
c11|c12|c13|c14|c15
Capisco che potrei specificare:
awk -F"|" '{printf "%-3s%s%s%s%s\n", $1, $2, $3, $4, $5}' file > newfile
Supponiamo che io sappia cosa voglio che sia la larghezza della prima colonna, ma NON so quanti campi ci sono nel file. Fondamentalmente voglio fare qualcosa del tipo:
... '{printf "%-3s|", $1}'
... e quindi stampare il resto dei campi nel loro formato originale.
sed 's/|/'' '' '' |/;s/\(...\) */\1/'
(qui aggiungendo virgolette aggiuntive per inserire quei 3 spazi mentre i commenti SE comprimono gli spazi contigui in uno)