[BASH] Einträge aus Datei löschen mittels Skript

Dieses Thema im Forum "Linux & BSD" wurde erstellt von Wraith, 15. Januar 2013 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 15. Januar 2013
    Servus,
    bin in dem Bereich ein totaler noob und bräuchte mal eure hilfe.

    Ich hab ein Shellskript welches einfach in eine Datei (zb log/test) beim ausführen das aktuelle datum und die pid des skripts einträgt (jedes mal in eine neue zeile).

    Nun gibt es noch folgenden aufgabenzusatz:

    Ich hab absolut keine Idee wie ich das rausfiltern lassen kann.
    Irgendwie mit dem vi Editor sollte es vermutlich gehen...
    Die Logdatei ist so aufgebaut:

    Code:
    [2013.01.15 00:41:16 (2388)] Test1
    [2013.01.15 00:41:57 (912)] Test2
    [2013.01.15 00:42:18 (4088)] Test3
    Wäre top wenn mir jmd eine lösung bzw tipps anbieten könnte.
    Nutze atm zum Testen noch cygwin auf meinen Windows Rechner^^

    Gruß
     
  2. 15. Januar 2013
    AW: [BASH] Einträge aus Datei löschen mittels Skript

    Würde da nicht mit vi, sondern mit awk oder sed rangehen. Die sind mächtiger.

    awk: The GNU Awk User’s Guide
    sed: GNU sed - GNU Project - Free Software Foundation (FSF)

    Viel Spaß.
     
    1 Person gefällt das.
  3. 15. Januar 2013
    AW: [BASH] Einträge aus Datei löschen mittels Skript

    Ok schonmal danke für den Tipp.
    Kann mir evtl jmd nen Ansatz noch verraten?

    angenommen es sieht so aus:
    Code:
    [2013.01.12 00:41:16 (2388)] Test1
    [2013.01.13 00:41:57 (912)] Test2
    [2013.01.13 00:42:18 (4088)] Test3
    [2013.01.15 00:42:18 (4089)] Test4
    Und alles was älter als 1 Tag ist soll gelöscht werden.
    Dann muss ich nach dem untersten Date suchen was in mein suchschema passt und alle lines darüber löschen. nur fehlt mir die umsetzungsidee-.-
     
  4. 17. Januar 2013
    AW: [BASH] Einträge aus Datei löschen mittels Skript

    Code:
    date +[%Y.%m.%d
    
    Um das richtig Datum zu finden

    Code:
    grep -n $pattern $file -m 1 | sed -n 's/^\([0-9]*\)[:].*/\1/p'
    
    Um die Zeilennummer zu bekommen. (Der sed-Regex kommt von The UNIX and Linux Forums - Learn UNIX and Linux from Experts)

    Jetzt musst du das ganze nur noch mit sed verknüpfen, und alle Zeilen bis zur herausgefundenen Nummer löschen.
     
    1 Person gefällt das.
  5. 17. Januar 2013
    AW: [BASH] Einträge aus Datei löschen mittels Skript

    vielen dank^^ werd es mit deinem auch nochmal testen.
    hab es mittlerweile auch mit sed (allerdings unnötig kompliziert) gelöst
     
  6. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.