online 1
gast (50)

/ Forum / Textverarbeitung

TextverarbeitungTextverarbeitung

Fragevon IMEAN vom 13.08.2020, 00:20 Options

unwichtige Zeilen aus log Datei löschen - mittels Schlüsselwörter

Hallo!

Ich habe eine Log Datei, die so aussieht (Ausschnitt):

12:19 [Game Command] erkan.immer: -ms
12:24 [Allies] Mordax: miss
12:27 [Allies] Mordax: ommni
12:41 [Allies] screencl3an_r3: re
12:43 [Allies] screencl3an_r3: 2 bot re
13:00 [Allies] Mordax: miss
13:06 [Allies] Mordax: razor
13:14 [Allies] Mordax: komm
13:16 [Allies] Mordax: mü
13:39 [Allies] Mordax: wart
13:43 [Allies] screencl3an_r3: 2 miss
13:45 [Allies] s_pirit[SUAD]: dachte razor geht bot?
13:47 [Allies] s_pirit[SUAD]: oh
13:51 [Allies] PzG-A_kri: ne der is bei uns

Jetzt brauche ich ein Programm, mit dem man einzelne Zeilen aus dieser Logdatei löschen kann. Genau gesagt alle Zeilen in denen "miss" "-di" und "re" vorkommen.

Könnt ihr mir da Helfen :-)

Grüße
Sven


Antwort schreiben

Antwort 1 von bored vom 13.08.2020, 00:52 Options

Unter Linux kannst du den sed benutzen.

sed -i -e 's/.*miss.*//' -e 's/.*-di.*//' -e 's/.*re.*//' -e '/^$/d' logfile.txt

Weitere zu löschende Wörter kannst du auch noch hinzufügen, in dem du weitere
-e 's/.*<WORT>.*//'
einbaust. Das ist so die einfachste Variante, die auch viel gewolltes rauslöschen könnte, da dein gewünschtes "re" auch evtl. gewollte Chatzeilen erfasst, die z.B. das Wort "rechts" oder so enthalten.
Für "miss" z.B. sollte man (weil ich das in deinem log so sehe) besser noch ein $ hinter das Wort machen und auf das hintere .* verzichten, weil das Wort "miss" dann am Zeilenende stehen muss. (also so: -e 's/.*miss$//')

Für Windows gibt's das auch hier. Musst dann halt die Kommandozeile benutzen oder du schreibst dir ne kleine .BAT-Datei.
Ein GUI-Programm dafür kene ich leider nicht.

Antwort 2 von Flupo vom 13.08.2020, 08:03 Options

Du könntest die Datei auch mit Excel öffnen, per AutoFilter die zu löschenden Zeilen raussuchen (benutzerdefiniert - Zelle enthält...) und löschen.

Gruß Flupo

Antwort 3 von IMEAN vom 13.08.2020, 20:45 Options

Danke für die Antworten!
-ich hab kein excel ^^, aber ich versuchs mit Gnumeric
-@bored: kannst du mir ganz grob erklären wie das Programm funktioniert? Wenn ich die Anwendung starte öffnet sich ganz kurz ein Fenster und das wars dan....
Ich bräuchte es nur ganz grob, damit ich ungefähr weiß wies geht.

Antwort 4 von bored vom 15.08.2020, 08:57 Options

Sorry, hatte den Thread aus den Augen verloren...

sed ist ein Kommandozeilenprogramm. Start->Ausführen->cmd und dann den sed ausführen. Deswegen auch mein Tip mit der Batch-Datei.

Oder WIE genau brauchst du die Anleitung?

Antwort 5 von batti-batch vom 15.08.2020, 16:22 Options

Hallo IMEAN,


eine mögliche Lösung wäre, mit einem Batch-Programm die überflüssigen Zeilen zu entfernen.

Dieses Programm lässt die originale Logdatei unverändert und schreibt das Ergebnis in eine neue Datei. Existiert eine Zieldatei gleichen Namens, wird diese vorher gelöscht.

Das Programm kannst Du sehr leicht an Deine Umgebung anpassen, in dem Du die erforderlichen Änderungen im SET-Block vornimmst:

REM ************************ SET-Block Beginn *********************

SET "quell_datei=C:\beispiel\logdatei.txt"
SET "ziel_datei=C:\beispiel\ausgabe.txt"

SET "suchen_1=miss"
SET "suchen_2=-di"
SET "suchen_3=re"

SET /a "zaehler=1"

REM ************************ SET-Block Ende ***********************


Hier kannst Du sowohl die Quell- als auch die Zieldatei und die Suchbegriffe den Bedingungen anpassen.

Hier nun das komplette Programm:

@ECHO off
SETLOCAL enabledelayedexpansion
CLS


REM
REM Testprogramm
REM Zeilen, die einen der Suchbegriffe enthalten
REM werden nicht in die Zieldatei uebernommen
REM
REM http://www.supportnet.de/threads/2140604
REM
REM (c) batti-batch 08/2008
REM
REM getestet unter Windows 2000
REM 


REM ************************ SET-Block Beginn *********************

SET "quell_datei=C:\beispiel\logdatei.txt"
SET "ziel_datei=c:\beispiel\ausgabe.txt"

SET "suchen_1=miss"
SET "suchen_2=-di"
SET "suchen_3=re"

SET /a "zaehler=1"

REM ************************ SET-Block Ende ***********************

REM Wenn die Zieldatei bereits existiert, wird sie geloescht
IF EXIST "%ziel_datei%" DEL /f "%ziel_datei%"

FOR /f "delims=" %%i IN ('FINDSTR . "%quell_datei%"') DO (

REM Suchbegriff 1 vorhanden?
FOR /f "delims=" %%a IN ('ECHO %%i ^|FINDSTR /C:" %suchen_1%"') DO (
SET zeile=%%a
IF DEFINED zeile (SET /a "zaehler+=1")
)

REM Suchbegriff 2 vorhanden?
FOR /f "delims=" %%b IN ('ECHO %%i ^|FINDSTR /C:" %suchen_2%"') DO (
SET zeile=%%b
IF DEFINED zeile (SET /a "zaehler+=1")
)

REM Suchbegriff 3 vorhanden?
FOR /f "delims=" %%c IN ('ECHO %%i ^|FINDSTR /C:" %suchen_3%"') DO (
SET zeile=%%c
IF DEFINED zeile (SET /a "zaehler+=1")
)

REM Wenn keiner der Suchbegriffe gefunden wurde (zaehler=1) 
REM wird die Zeile in die Ausgabedatei geschrieben
IF !zaehler! EQU 1 ECHO %%i>>"%ziel_datei%"
SET /a "zaehler=1"

)

ECHO Fertig^^!
ECHO.
ECHO Ausgabe in der Datei %~nx0 im Verzeichnis %~dp0



Viel Spaß beim Testen.

Herzliche Grüße
batti-batch

Ähnliche Themen

ddwebrenderer::render: Kein Eintrag!

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026