Rozumiem, jak korzystać z funkcji printf awk, ale nie chcę określać wszystkich pól.
Załóżmy na przykład, że to mój plik:
c1|c2|c3|c4|c5
c6|c7|c8|c9|c10
c11|c12|c13|c14|c15
Chcę go sformatować tak, aby pierwszym polem każdego rekordu była szerokość c11 - najdłuższa komórka w pierwszym polu:
c1 |c2|c3|c4|c5
c6 |c7|c8|c9|c10
c11|c12|c13|c14|c15
Rozumiem, że mógłbym określić:
awk -F"|" '{printf "%-3s%s%s%s%s\n", $1, $2, $3, $4, $5}' file > newfile
Załóżmy, że wiem, jaka powinna być szerokość pierwszej kolumny, ale NIE wiem, ile pól jest w pliku. Zasadniczo chcę zrobić coś takiego:
... '{printf "%-3s|", $1}'
... a następnie wydrukuj pozostałe pola w oryginalnym formacie.
sed 's/|/'' '' '' |/;s/\(...\) */\1/'
(tutaj dodając dodatkowe cytaty w celu wstawienia tych 3 spacji, gdy komentarze SE ściskają ciągłe spacje w jednym)