Datum aus .ics Datei auslesen und nächsten "Termin" ausgeben

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von freeman1988, 11.02.2007.

  1. #1 freeman1988, 11.02.2007
    freeman1988

    freeman1988 Grünschnabel

    Dabei seit:
    11.02.2007
    Beiträge:
    4
    Zustimmungen:
    0
    Hallo.
    Zuersteinmal ein kurzes Danke für eure Arbeit und dieses tolle Forum.

    Ich habe natürlich die Suchfunktion genutzt und auch auf eigene Faust lange herumgesucht, aber bin leider bei diesem Problem hängen geblieben.

    Folgende Problemstellung:
    Ausgangsmaterial ist eine .ics Kalenderdatei. Aus der habe ich die Anfangszeiten aller Termine herausgeholt
    ed -n -e '/DTSTART:20/p' alarm.ics > alarmzeiten
    Danach den ganzen Müll weggecuttet
    cut -d ":" -f2 quelle > ziel
    cut -b1-11 alarmzeiten2 > alarmzeiten3

    Jetzt stehn in dieser Datei alle Daten drinnen, vergangene wie zukünfige.

    Da das ganze in weiterer Folge zu einem Wecker werden soll muss ich jetzt das nächstfolgende Datum auf now raussuchen. Das wird dann in eine at-Funktion geschrieben und in nvram-wakeup eingetragen.

    Das Problem ist also: Wie macht man eine Suche, bei der man die nächste Zahl, größer als die Zahl die date ausgibt, sucht? (Ich geh mal davon aus dass man dazu die Datumswerte am besten in Sekunden umwandelt)


    PS.: Das ist dass erste Mal dass ich mich an sowas herantrau, also seit nachsichtig :)

    OS: Gentoo, Shell: BASH


    Danke für eure Hilfe.
    Ich hoffe ich hab mich halbwegs klar ausgedrückt. :think:
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 Wolfgang, 11.02.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Wenn du wirklich Hilfe willst, dann ist es notwendig die Ausgangsdaten korrekt zu benennen und das erwartete Ergebnis ebenso.
    Woher sollen wir wissen, welche Daten vorliegen?
    Weiterhin solltest du deine verwendete Shell benennen.
    In welchem Format liegt denn deine Zeitangabe vor?
    An GNU date kann man ja eine Zeit verfüttern, die mit %s den Timestamp augibt.
    Aber das ist alles sehr spekulativ...

    Woher soll ich wissen ob du das zur Verfügung hast?


    Also bmühe dich nochmal etwas genauer.
    Gruß Wolfgang
     
  4. #3 freeman1988, 12.02.2007
    freeman1988

    freeman1988 Grünschnabel

    Dabei seit:
    11.02.2007
    Beiträge:
    4
    Zustimmungen:
    0
    danke

    erstmal danke für deine Antwort.

    Ausgangsdatei ist alarm.ics
    Darin liegen die Zeiten in einem "Date-kompatiblen" Format (zB 20070212.....)
    Diese Daten kann man problemlos mit date in jedes gewünschte Format konvertieren.

    Als erwartetes Ergebnis würde reichen wenn ich einfach das gesuchte Datum ausgeben könnte. In einem mit date kompatiblen Format.

    Shell ist BASH, wie oben schon geschrieben.


    Ich hoffe das ist genau genug. (??)
     
  5. #4 Wolfgang, 12.02.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Ich weiß zwar immer noch nicht, wie die Daten aussehen, aber wenn es dir nicht um das Parsen geht, sondern nur um das Berechnen:
    GNU date:
    Abweichungen mit dieser Methode (verwende hier extra nicht den Fromatierer %s für Timestamp) zu anderen Versionen sollten gering sein und aus der Manpager zu erfahren sein.
    Code:
    $ date -d"now 10 days"
    Do 22. Feb 12:50:02 CET 2007
    $ date -d"20070212 12:50:10 CET 10 days"
    Do 22. Feb 12:50:10 CET 2007
    
    Gruß Wolfgang
     
  6. #5 freeman1988, 12.02.2007
    freeman1988

    freeman1988 Grünschnabel

    Dabei seit:
    11.02.2007
    Beiträge:
    4
    Zustimmungen:
    0
    Hmm.

    Also die Daten stehen in dem .ics-File so drinnen

    PHP:
    BEGIN:VEVENT
    CREATED
    :20070124T162653Z
    LAST
    -MODIFIED:20070124T162653Z
    DTSTAMP
    :20070124T162653Z
    UID
    :uuid:1169655997140
    SUMMARY
    :Neuer Termin
    DTSTART
    ;TZID=/mozilla.org/20050126_1/Europe/Vienna:20070124T151500
    DTEND
    ;TZID=/mozilla.org/20050126_1/Europe/Vienna:20070124T153000
    END
    :VEVENT
    Davon habe ich nur die Zeile DTSTART benutzt.
    Der Timestamp darin ist also 20070124T15

    Nachdem ich die ganze alarm.ics nach diesen DTSTART-Zeilen durchsucht habe hab ich dann eine Liste von Daten.


    Jetzt brauche ich lediglich diese Datenzeilen mit dem jetzigen Datum vergleichen. Als Ausgabe möchte ich das am nächsten zu jetzt folgende datum...

    Bsp.:

    ---datenliste - eingabe---
    200702110700
    200702120700
    200702130700
    200702140700
    ---/datenliste------

    Datum jetzt (Ausgabe von date, also lokales Datum) = 200702121720

    Ausgabe: 200702130700


    :hilfe2:
    Ich danke euch für eure Geduld......
     
  7. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Ich finde die Benutzung von date reichlich undurchsichtig, deswegen ist meine Lösung nicht unbedingt optimal. Aber vielleicht hilft's:

    Code:
    bla$ tdate=$(echo 200702121720 | sed 's/\([0-9]\{4\}\)\([0-9]\{2\}\)\([0-9]\{2\}\)\([0-9]\{2\}\)\([0-9]\{2\}\)/\1-\2-\3 \4:\5/')
    bla$ date "+%Y%m%e%H%M" -d "$tdate + 1 day"                                                  
    200702131720
    
    Gruß, Daniel
     
  8. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  9. #7 freeman1988, 12.02.2007
    freeman1988

    freeman1988 Grünschnabel

    Dabei seit:
    11.02.2007
    Beiträge:
    4
    Zustimmungen:
    0
    Bitte korrigier mich, wenn ich was falsch verstehe, aber du rechnest zum lokalen Datum 1 Tag dazu, oder?

    Vl. hast du das falsch gelesen, aber die Lösung soll das nächstfolgende Datum aus der Datenliste ausgeben - in diesem Fall 200702130700
     
  10. #8 Xanti, 12.02.2007
    Zuletzt bearbeitet: 12.02.2007
    Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Mist, wer lesen kann. Ich hätt mir einigen Kummer mit date ersparen können. ;)

    Mal sehen, ob ich Dich jetzt richtig verstanden habe:

    Code:
    tdate=$(date "+%Y%m%e%H%M")
    cat datelist | while read i; do
      if [ "$tdate" -le "$i" ]; then
        echo $i
        break
      fi
    done
    
    In datelist steht:

    Code:
    200702110700
    200702120700
    200702130700
    200702140700
    
     
Thema: Datum aus .ics Datei auslesen und nächsten "Termin" ausgeben
Besucher kamen mit folgenden Suchen
  1. unix dateidatum ausgeben

Die Seite wird geladen...

Datum aus .ics Datei auslesen und nächsten "Termin" ausgeben - Ähnliche Themen

  1. Dateien nach Datum finden

    Dateien nach Datum finden: Hallo zusammen, ich würde gerne Wissen wie ich am einfachsten Dateien nach einem bestimmten Datum in einem Verzeichnis suchen kann. Das...
  2. Datum innerhalb einer Datei wandeln dd.mm.jjjj auf jjj-mm-dd

    Datum innerhalb einer Datei wandeln dd.mm.jjjj auf jjj-mm-dd: Hallo Leute! Mein Problem ist das Datumsformat inerhalb einer Textdatei. Kann man mit "sed" diese Textdateien so ändern, daß ich die Zeilen in...
  3. Datum aus Datei auslesen und zwischenspeichern

    Datum aus Datei auslesen und zwischenspeichern: Hallo, bin in Sachen Shell ziemlicher Anfänger, benötige aber ein kleines Skript. Und zwar soll es mir aus einer *.log alle Einträge mit...
  4. [Tcl / Shell] Ändern einer Datei per vi - Änderungsdatum einer Datei erfassen

    [Tcl / Shell] Ändern einer Datei per vi - Änderungsdatum einer Datei erfassen: Hallo liebe Leute, ich habe zwei Probleme, die ich bisher nicht lösen kann, ich hoffe, ihr könnt mir hier weiterhelfen. Mein erstes Problem:...
  5. Dateien mit nach Erstellungsdatum in Ordner verschieben

    Dateien mit nach Erstellungsdatum in Ordner verschieben: Hallo Forum, ich habe ca. 10000 Dateien und möchte diese in Ordner nach Ihrem Erstellungsdatum verschieben. Die Ordner mit jahr-monat-datum...