Zeilen in .txt Löschen die einen String enthalten
Ich möchte Logdatein durchsuchen nur haben die ca. 10 Mio. Zeilen.
Nun Möchte ich manche Zeilen die z.B.: "[debug]" oder "**" enthalten aus der Log Datei entfernen und wenn möglich in eine neue Datei speichern.
Ich habe zwar schon ansätze gefunden nur funktioniert das bei mir leider gar nicht.
@echo on & setlocal
set "Pfad=D:\Downloads"
set "Suche=[debug]"
for /f "delims=" %%i in ('findstr /m /b "%Suche%" "%Pfad%\slog0.txt"') do (
type "%%i">%temp%\all.txt
findstr /b /v "%Suche%" "%temp%\all.txt">%temp%\No#.txt && move %temp%\No#.txt "%%i"
)
del "%temp%\all.txt"
del "%temp%\No#.txt"
Das habe ich ausprobiert, funktioniert leider nicht. Muss auch sagen verstehe den Code leider nicht.
Nun Möchte ich manche Zeilen die z.B.: "[debug]" oder "**" enthalten aus der Log Datei entfernen und wenn möglich in eine neue Datei speichern.
Ich habe zwar schon ansätze gefunden nur funktioniert das bei mir leider gar nicht.
@echo on & setlocal
set "Pfad=D:\Downloads"
set "Suche=[debug]"
for /f "delims=" %%i in ('findstr /m /b "%Suche%" "%Pfad%\slog0.txt"') do (
type "%%i">%temp%\all.txt
findstr /b /v "%Suche%" "%temp%\all.txt">%temp%\No#.txt && move %temp%\No#.txt "%%i"
)
del "%temp%\all.txt"
del "%temp%\No#.txt"
Das habe ich ausprobiert, funktioniert leider nicht. Muss auch sagen verstehe den Code leider nicht.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 204230
Url: https://administrator.de/contentid/204230
Ausgedruckt am: 25.11.2024 um 08:11 Uhr
5 Kommentare
Neuester Kommentar
Hier "denkt" findstr, die Option "/b" (Zeilenanfang) sei gewählt & meckert über die unbekannten Optionen /a, /c & /k. Kann mit der Option /c: umgangen werden oder so:
Hier werden (natürlich) auch Zeilen gefunden, wo kein <space> vor "/back" steht. Warum die double quotes den slash nicht escapen: kA. Aber findstr hat reichlich bugs & "features".
<slog0.txt> exlog.txt findstr /l " /back"
Hi!
Ich würde das mit RegEx lösen. Bei 10 Mio Zeilen...
So auf die Schnelle habe ich mal den RegEx Pattern zusammengeschustert:
(?:.*\[debug\].*)\r\n|(?:.*\*{2}.*)\r\n
Mein Testtext ist folgender:
Zeile mit Kram drin
Zeile mit [debug] drin
Zeile mit was anderen
Zeile mit ** und noch mehr Zeichen
Zeile für das Ende
Wenn ich den Testtext in Notepad++ reinkopiere und bei suchen und ersetzen ->
Suchen nach:
Ersetzen durch:
Suchmodus: Reguläre Ausdrücke -> anhacke
und dann auf [Alle Ersetzen] klicke kommt folgendes raus:
Zeile mit Kram drin
Zeile mit was anderen
Zeile für das Ende
Vielleicht nicht perfekt, aber auch ein Ansatz bzw. Versuch wert.
florengray
Ich würde das mit RegEx lösen. Bei 10 Mio Zeilen...
So auf die Schnelle habe ich mal den RegEx Pattern zusammengeschustert:
(?:.*\[debug\].*)\r\n|(?:.*\*{2}.*)\r\n
Mein Testtext ist folgender:
Zeile mit Kram drin
Zeile mit [debug] drin
Zeile mit was anderen
Zeile mit ** und noch mehr Zeichen
Zeile für das Ende
Wenn ich den Testtext in Notepad++ reinkopiere und bei suchen und ersetzen ->
Suchen nach:
(?:.*\[debug\].*)\r\n|(?:.*\*{2}.*)\r\n
\0
und dann auf [Alle Ersetzen] klicke kommt folgendes raus:
Zeile mit Kram drin
Zeile mit was anderen
Zeile für das Ende
Vielleicht nicht perfekt, aber auch ein Ansatz bzw. Versuch wert.
florengray