Batch/Programm zum Zeilen löschen
lima-city → Forum → Programmiersprachen → Sonstige Programmiersprachen
ablegen
adresse
ahnung
aufnehmen
auslese
begriff
beispiel
code
datei
folgende befehle
helfen
http
log
not
programm
rest
sonstige programmiersprachen
tag
url
zeile
-
Hallo
Ich brauche etwas, das mir aus einem tag/log">Logfile (txt) Zeilen löscht.
Selbstverständlich habe ich auch schon bei Google gekuckt :-) Ein Programm habe ich gefunden, da kann man aber nur einen Begriff eingeben. Ich würde gerne so 10-20 Begriffe suchen und dann die entsprechenden Zeilen löschen lassen.
Etliche Foreneinträge habe ich auch gefunden, aber die Batch-Dateien haben nie das gemacht was ich eigentlich wollte
Von Batch-Dateien habe ich leider keine Ahnung, da ich aber davon ausgehe, dass es sich damit wahrscheinlich ziemlich einfach realisieren lässt hab ich mal bei "Sonstige Programmiersprachen" gepostet :)
Vielleicht kann mir da ja jemand helfen?^ . ^ Habe wie gesagt keine Ahnung davon, aber leider auch keine Zeit mich da erstmal groß einzulesen.
schönen Tag -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
ichbinlooper schrieb: mhmm....
Batch hat kein Dateihandling, sorry
Sehe ich anders. Es recht oftmals schon, die Ausgabe mit ">" auf eine Datei umzuleiten. Demnach ist das Dateihandling ...
Vielleicht würde es helfen, wenn du ein Sample-Logfile hier posten würdest, und sagen würdest, welche Zeilen mit welchen Begriffen entfertn werden sollen. Das würde beim Herumprobieren helfen. Mit einer FOR-Schleife und der Verwendung von Tokens sollte sich da möglicherweise was basteln lassen ... -
Hallo voloya,
das beste Werkzeug für sowas ist sed. Das kannst Du hier runterladen:
http://gnuwin32.sourceforge.net/packages/sed.htm
Wenn Du das entpackt hast, dann musst Du den Installationsordner entweder in den Systempfad aufnehmen oder Du kopierst die Dateien (sed.exe und die DLLs) nach C:\Windows\System 32. Alternativ kannst Du die Dateien auch im gleichen Verzeichnis wie Deine Batch-Datei ablegen.
Um mit sed alle Zeilen zu löschen, die bestimmte Worte beinhalten brauchst Du dann folgende Befehle:
sed '/\(wort1\|wort2\|wort3\)/d' log.txt > log.tmp move /Y log.tmp log.txt
Wichtig ist, dass Du zwischen jedem Wort \| schreibst. In der ersten Zeile werden die Zeilen gelöscht. Die zweite Zeile ersetzt dann log.txt durch die bereinigte Datei.
Edit:
Falls Du mehr über sed erfahren willst, dann kannst Du ja mal hier schauen:
http://www.grymoire.com/Unix/Sed.html#uh-0
Beitrag zuletzt geändert: 11.2.2011 16:44:35 von darkpandemic -
Hallo
Okay also hier mal das gewünschte beispiel:
07.02.2011 - 19:53:07 IP: 949a4b0f2ae5985dd7493c9842bbe0ea -> Referrer:
Zeilen mit bestimmten IP-Adressen würde ich gerne löschen :-) (die Verschlüsselung ist Absicht, da man ja keine IP-Adressen speichern darf.. glaube ich.)
Vielen Dank für die Empfehlung von diesem "sed". Es scheint aber irgendwie ein bisschen komplex zu sein Ich dachte mit Batch-Dateien geht sowas einfach, aber tut es wohl nicht?
Zur Not auch PHP, halt IRGENDWAS Ein Programm mit einer ansprechenden Benutzeroberfläche wäre mir am liebsten
sowas wie DAS HIER bloß dass man halt da nur einen Begriff gleichzeitig löschen lassen kann -_-
mfg -
Vorhandenen Eintrag entfernen und den Rest in eine Datei schreiben:
type ip.txt|find /v "Unwichtiger Text" > rest.txt
Oder das hier: Batch Textfile auslesen -
Mit PHP kannst du das recht einfach lösen.
Hier der Code: http://pastebin.com/dK86KWB8
Hier mal ein Beispiel: http://samban.lima-city.de/search.php
Und hier die Original-Datei: http://samban.lima-city.de/log.txt
Beitrag zuletzt geändert: 15.2.2011 17:28:37 von samban -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage