Niestety, printf przy wyrównywaniu słów liczy bajty, a nie znaki,
więc przy wielobajtowych (tutaj: znaki diakrytyczne) psuje formatowanie.
$ for m in {1..12}; do
printf "%-9s %-12s %-9s %-9s %s" \
$(for l in C pl_PL cs_CZ fr_FR de_DE; do
printf "%s " $(LANG=$l.UTF-8 date -d 1970-$m-01 +%OB);
done);
done
January styczeń leden janvier Januar
February luty únor février Februar
March marzec březen mars März
April kwiecień duben avril April
May maj květen mai Mai
June czerwiec červen juin Juni
July lipiec červenec juillet Juli
August sierpień srpen août August
September wrzesień září septembre September
October październik říjen octobre Oktober
November listopad listopad novembre November
December grudzień prosinec décembre Dezember
Jedną z alternatyw jest użycie printf z awk.
$ for m in {1..12}; do for l in C pl_PL cs_CZ fr_FR de_DE; do
printf "%s " $(LANG=$l.UTF-8 date -d 1970-$m-01 +%OB);
done; echo; done \
| awk '{printf "%-9s %-12s %-9s %-9s %s\n", $1, $2, $3, $4, $5}'
January styczeń leden janvier Januar
February luty únor février Februar
March marzec březen mars März
April kwiecień duben avril April
May maj květen mai Mai
June czerwiec červen juin Juni
July lipiec červenec juillet Juli
August sierpień srpen août August
September wrzesień září septembre September
October październik říjen octobre Oktober
November listopad listopad novembre November
December grudzień prosinec décembre Dezember