Alle Termine in einem ICAL-Kalender um einen Tag nach vorne legen per Shell-Skript

18/12/2015 - 13:26 von Wolfgang Klein | Report spam
Moin!

Die Betreffzeile sagt es schon: ich muss in einem ICAL-Kalender alle
Termine um genau einen Tag nach vorne legen. Aus

BEGIN:VEVENT
DTSTART;TZID=Europe/Berlin:20160104
...
END:VEVENT

müsste dann also

BEGIN:VEVENT
DTSTART;TZID=Europe/Berlin:20160103
...
END:VEVENT

werden, usw. Die Ereignisse sind in der Datei immer nach diesem Muster
aufgebaut, und es handelt sich nur um ganztàgige Termine, was die Sache
etwas einfacher macht. Ich kriege es natürlich hin, mit "sed -i" etwas
zu àndern in einer Datei, aber hier brauche ich noch die korrekte
Berechnung des Datums in der Ersetzung. Es reicht nicht, nur einfach den
Tag, also die letzten beiden Ziffern um 1 zu erniedrigen, denn aus dem
1. Tag eines Monats muss selbstverstàndlich der letzte Tag des
vorangehenden Monats werden.

Klar kann ich den Kalender in Thunderbird laden und alles per Hand
verschieben, was bei ca 100 Eintràgen weniger lange dauert, als das
Tippen diesen Beitrages. Aber davon lerne ich ja nichts. :)

Außerdem gilt wie immer unter Linux: kein Handgriff muss mehr als 2 mal
ausgeführt werden, wofür gibt es denn eine skriptfàhige Shell? ;)


Irgendwelche Ideen?



Wolfgang
 

Lesen sie die antworten

#1 Marcel Logen
18/12/2015 - 19:29 | Warnen spam
Wolfgang Klein schrieb:

zu àndern in einer Datei, aber hier brauche ich noch die korrekte
Berechnung des Datums in der Ersetzung. Es reicht nicht, nur einfach den
Tag, also die letzten beiden Ziffern um 1 zu erniedrigen, denn aus dem
1. Tag eines Monats muss selbstverstàndlich der letzte Tag des
vorangehenden Monats werden.



Wenn Du "GNU date" hast, kannst Du von einem gegebenen
Datum auf diese Weise einen Tag abziehen:

| :~$ TTTT 160301
| :~$ date --date="$TTTT -1 day" +%Y%m%d
| 20160229

Marcel
++ ++ ++ +--+ ++ +--
+-+ +-+ +--+ +--+ +--+ +-+ +--+ +--+ +-+
-+ ++ +--+ +-+ +-+ ++ +-+ +-+ +-+ +-+
+-+ +--+ ++ ++ ++ +-+

Ähnliche fragen