Null-Pad-Zahlen in der Ausgabe von `cal` (oder `gcal`)?

Das schien ziemlich einfach zu sein, aber ich habe keinen guten Weg gefunden, es zu tun.

Im Terminal calwird diese Ausgabe ausgegeben:

September 2015 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

Das heißt, es wird der Kalender für den aktuellen Monat angezeigt.

Ich möchte es so angezeigt bekommen:

September 2015 Su Mo Tu We Th Fr Sa 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

Das scheint ziemlich einfach zu sein, aber bisher kann ich es nicht knacken.

Anfangs dachte ich, ich würde nur nach den Zahlen 1-9 mit einem Leerzeichen auf beiden Seiten suchen. Das funktioniert ... außer wenn die Nummer am Samstag oder Sonntag ist, denn dann gibt es kein führendes/nachlaufendes Padding.

Also bin ich ratlos. Ich habe mir sogar GNU cal angesehen, das anscheinend eine Unmenge an Optionen hat, aber ich konnte keine dafür finden.

Ich bin mir sicher, dass es eine Möglichkeit gibt, dies mit sed/awk/tr/etc zu tun, aber ich kann es nicht herausfinden. Ich würde eine möglichst „leichte“ Lösung bevorzugen, da dies häufig ausgeführt wird, aber ich bin nicht abgeneigt, etwas anderes über zu installieren, brewwenn es eine bessere/effizientere Arbeit leisten kann.

Antworten (1)

sedzur Rettung:

pse@Mithos:~$ cal 09 2015 | sed -e 's/ \([[:digit:]]\) /0\1 /g' \
                                -e 's/ \([[:digit:]]\)$/0\1/g'
   September 2015
Su Mo Tu We Th Fr Sa
      01 02 03 04 05
06 07 08 09 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30

Das Kombinieren der beiden sedBefehle zu einem bleibt dem Leser als Übung überlassen.

Eindrucksvoll. Ich wusste, dass es einen Weg geben musste, aber das Googeln brachte mich nicht in die Nähe der Antwort. AskDifferent rettet wieder den Tag. Danke!