Vollständige Version anzeigen : [BASH] Einträge aus Datei löschen mittels Skript


Wraith
15.01.2013, 00:24

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:

Dabei sollen keine Einträge, die älter als eine fest im Skript als Variable zu hinterlegende Anzahl von Tagen ist, in der Datei enthalten sein;

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:

[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ß

Hardware Preisvergleich | Amazon Blitzangebote!

Videos zum Thema
Video Loading...
besterwosgibt
15.01.2013, 09:51

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

awk: The GNU Awk User’s Guide (;;;gnu~org/software/gawk/manual/gawk;html)
sed: GNU sed - GNU Project - Free Software Foundation (FSF) (;;;gnu~org/software/sed/)

Viel Spaß. ;)


Wraith
15.01.2013, 14:03

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

angenommen es sieht so aus:
[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-;-


test@private.co
16.01.2013, 23:42

Kann mir evtl jmd nen Ansatz noch verraten?


date +[%Y;%m;%d

Um das richtig Datum zu finden


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 (;;;unix~com/))

Jetzt musst du das ganze nur noch mit sed verknüpfen, und alle Zeilen bis zur herausgefundenen Nummer löschen.


Wraith
17.01.2013, 13:37

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


Ähnliche Themen zu [BASH] Einträge aus Datei löschen mittels Skript
  • contextmenü einträge löschen...
    hi hab mal ein problem :D.. ka ob das dings contextmenü heißt aber mom ich amch schnell ein foto 15588 wie kann ich da paar einträge löschen ohne das ich das programm deinstallieren muss.. z;b. das von winuha oder winrar???? bewertung is drin :D [...]

  • Einträge in der Regedit löschen?
    Hallo, habe folgendes Problem: Versuche grad meine Regedit zu entmüllen und kann einige Einträge nicht entfernen;Habe es im abgesicherten Modus schon probiert geht aber auch nicht. Gibt es eigentlich ein Programm, das mir sämliche Eintragungen in der Regedit aufgelistet anzeigt wo bestimmte ins [...]

  • [Bash] Globale Variable aus einem Bash Skript heraus ändern?!
    Hi, ich hab folgende Aufgabenstellung: Ich muss ein Bash Skript schreiben, welches eine gewisse Shell-Variable (Parameter 1) öffnet, diese bis zu einem gewissen Zeichen (Parameter 2) löscht und somit eine neue Shell Variable erstellt. Praktisch: ;/skript Path : Die Variable Path wird [...]

  • [Windows 7] Batch-Datei zum Durchsuchen der Registry und Löschen bestimmer Einträge
    Ich brauche eine Batch-Datei (oder ähnliches), die meine Registry nach dem Wert "alien skin" durchsucht und sämtliche Einträge (Schlüssel, Ordner, etc;), die diesen Wert enthalten, löscht. Hab eben schon 'n bisschen in der cmd;exe mit dem REG Befehl rumprobiert, aber ich komme mit der Syntax [...]



raid-rush.ws | Imprint & Contact pr