Datumsstrings älter als x Tage aus Datei löschen

S

Sisko78

Jungspund
Hallo,

ich habe hier eine Datei mit Zeilen, in denen ein Datum enthalten ist (irgendwo mitten drin, Format Year-month-day). Jetzt überlege ich schon ziemlich lange, wie ich das machen kann, dass eine Zeile gelöscht wird, wenn das Datum dieser Zeile älter als meinetwegen 30 Tage ist.
Einen praktikablen Ansatz habe ich noch nicht gefunden. Was mir jetzt so einfiel:
Mit sed o.ä. die Datumsstrings in eine Datei
Dieses Zeilenweise auslesen und irgendwie in ein zu gnu date kompatibles format (%s) bringen, die Differenz zum aktuellen Datum ausrechnen, wenn > 30 Tage dann Zeile irgendwie löschen.

Naja, da sind noch einige Fragezeichen und irgendwies, deshalb diese Frage an euch.

Vielen Dank im vorraus

Gruß
Sisko
 
Hallo
Wenn du die Zeile mit dem Datum älter als 30 Tage selbst löschen willst und GNU date hast geht folgender Schnellschuß mit reinen Bash mitteln.
(du hast keine andere Shell angegeben, deshalb nur die Bashlösung!)
Hier gebe ich das nur auf STDOUT aus und unterdrücke alle Zeilen, die ein Datum YYYY-MM-DD älter 30 Tage enthalten.
Ein Lösungsansatz:
Code:
$ cat test
das ist eine datei
diese Datei hat ein Datum in einer Zeile
das Datum steht hier 2007-06-01 drinnen.
Es gibt noch ein altes Datum 2007-05-14 in dieser Zeile.
der Text geht weiter.
Ende des Textes.
$ S=$(date -d"30day ago" +"%s");while read t; do  N=$(echo $t|egrep "[[:digit:]]{4}-[[:digit:]]{2}-[[:digit:]]{2}"); if [ -z "$N" ];then echo $t; elif [ "$(date -d"$(echo $t|egrep -o "[[:digit:]]{4}-[[:digit:]]{2}-[[:digit:]]{2}")" +"%s")" -gt $S ]; then echo $t;fi;done <test
das ist eine datei
diese Datei hat ein Datum in einer Zeile
das Datum steht hier 2007-06-01 drinnen.
der Text geht weiter.
Ende des Textes.

Wie du siehst ist die Zeile mit dem Datum 2007-05-14 nicht dabei.
Das Arbeiten mit Tempdateien, Iterieren über Verzeichnisse usw. überlass ich dir.

Gruß Wolfgang
 
Sry, hab ein paar Tage nicht mehr hier rein geschaut.
Vielen Dank für deinen Vorschlag, damit komme ich sicher weiter.

Gruß
Sisko
 

Ähnliche Themen

Textdatei manipulieren mittels sed

Dateien loeschen die aelter als x tage sind

Löschen von diversen Unix Dateien älter x Tage und nur 3 Generationen

Zurück
Oben