[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. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  1. #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. Anzeige
  3. #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.
  4. #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-.-
     
  5. #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.
  6. #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 ;)
     

  7. Videos zum Thema
Die Seite wird geladen...