Zeilen vor und nach Suchstring aus Text löschen
Hallo liebe Forum-Mitglieder!
Ich hoffe Ihr könnt mir bei meinem Problem helfen:
Ich habe eine massive Textdatei (~70000 Zeilen) aus der ich nach einem bestimmten, multipel auftretenden String suchen und die 2 Zeilen vor dem String, 6 Zeilen nach dem String und die Zeile in der der String vorkommt aus dem Text löschen will. Ich habe schon vieles versucht, komme aber immer wieder auf eine Lösung mit 2 ineinander verschachtelten for-Schleifen und das ist bei dieser Filegröße mit einer sehr sehr langen Durchlaufzeit verbunden. Mir ist wohl klar, dass ein Batch nicht die idealste Lösung ist, aber ich brauche eine toolunabhängige und wenn möglich relativ schnelle Lösung.
Habt ihr vielleicht einen Geniestreich in der Hinterhand?
Vielen Dank schonmal im voraus, beste Grüße, echoloud
Ich hoffe Ihr könnt mir bei meinem Problem helfen:
Ich habe eine massive Textdatei (~70000 Zeilen) aus der ich nach einem bestimmten, multipel auftretenden String suchen und die 2 Zeilen vor dem String, 6 Zeilen nach dem String und die Zeile in der der String vorkommt aus dem Text löschen will. Ich habe schon vieles versucht, komme aber immer wieder auf eine Lösung mit 2 ineinander verschachtelten for-Schleifen und das ist bei dieser Filegröße mit einer sehr sehr langen Durchlaufzeit verbunden. Mir ist wohl klar, dass ein Batch nicht die idealste Lösung ist, aber ich brauche eine toolunabhängige und wenn möglich relativ schnelle Lösung.
Habt ihr vielleicht einen Geniestreich in der Hinterhand?
Vielen Dank schonmal im voraus, beste Grüße, echoloud
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 180552
Url: https://administrator.de/contentid/180552
Ausgedruckt am: 22.11.2024 um 17:11 Uhr
5 Kommentare
Neuester Kommentar
Hallo echoloud,
leider kenne ich kein Tutorial zu dem Thema VB Script. Mir hilft da immer eine entsprechende Zeilen mit dem was ich machen will, wie z.B. "VBS Textdatei lesen", "VBS Textdatei schreiben", in eine Suchmaschine einzugeben und mir die Ergbnisse mal genauer anzusehen.
Deine Anforderung könnte man z.B. wie folgt lösen:
Ich habe dabei jetzt erst mal vernachlässigt, dass Du die Datei ersetzen willst und eine neue Datei mit dem Ergebnis erstellt.
Wenn Du Dich mit dem Thema auseinandersetzen willst würde ich Dir empfehlen mal die verwendeten Befehle in eine Suchmaschine einzugeben und Dir die Erklärungen dazu durchzulesen. Das wäre dann schon mal ein Einstieg, mit dem man viele Problemstellungen in diesem Bereich (Datei zeilenweise einlesen und ggf. modifiziert in eine neue Datei ausgeben) einfach lösen kann.
Viele Grüße icsAT
leider kenne ich kein Tutorial zu dem Thema VB Script. Mir hilft da immer eine entsprechende Zeilen mit dem was ich machen will, wie z.B. "VBS Textdatei lesen", "VBS Textdatei schreiben", in eine Suchmaschine einzugeben und mir die Ergbnisse mal genauer anzusehen.
Deine Anforderung könnte man z.B. wie folgt lösen:
Dim fso, fInput, fOutput
Dim strInputFileName, strOutputFileName, strInputLine(2), strSearch
Dim counter
set fso = CreateObject("Scripting.FileSystemObject")
strSearch = "suchstring"
strInputFileName = "input.txt"
strOutputFileName = "output.txt"
set fInput = fso.OpenTextFile(strInputFileName, 1)
set fOutput = fso.CreateTextFile(strOutputFileName, True, False)
Do While fInput.AtEndOfStream <> True
strInputLine(0) = fInput.ReadLine
if InStr(strInputLine(0), strSearch) <> 0 then
for counter = 1 to 6
strInputLine(0) = fInput.ReadLine
if InStr(strInputLine(0), strSearch) <> 0 then
counter = 0
end if
if fInput.AtEndOFStream Then
counter = 6
end if
next
strInputLine(0) = ""
strInputLine(1) = ""
strInputLine(2) = ""
else
if strInputLine(1) = "" then
strInputLine(1) = strInputLine(0)
else
if strInputLine(2) = "" then
strInputLine(2) = strInputLine(1)
strInputLine(1) = strInputLine(0)
else
if fInput.AtEndOfStream <> True then
fOutput.WriteLine strInputLine(2)
strInputLine(2) = strInputLine(1)
strInputLine(1) = strInputLine(0)
else
fOutput.WriteLine strInputLine(2)
fOutput.WriteLine strInputLine(1)
fOutput.WriteLine strInputLine(0)
end if
end if
end if
end if
Loop
fOutput.Close
fInput.Close
set fInput = nothing
set fOutput = nothing
set fso = nothing
Ich habe dabei jetzt erst mal vernachlässigt, dass Du die Datei ersetzen willst und eine neue Datei mit dem Ergebnis erstellt.
Wenn Du Dich mit dem Thema auseinandersetzen willst würde ich Dir empfehlen mal die verwendeten Befehle in eine Suchmaschine einzugeben und Dir die Erklärungen dazu durchzulesen. Das wäre dann schon mal ein Einstieg, mit dem man viele Problemstellungen in diesem Bereich (Datei zeilenweise einlesen und ggf. modifiziert in eine neue Datei ausgeben) einfach lösen kann.
Viele Grüße icsAT
Hallo echoloud,
gerne, wobei ich es persönlich meist nicht zielführend finde hier anderen komplett fertige Lösungen zu präsentieren, da imho häufig der Lerneffekt dadurch in Richtung Null geht. Da Du aber bisher noch nicht mit VB Script gearbeitet hast und ich Dir kein passendes Tutorial anbieten konnte habe ich gedacht ein Beispiel, dass Deine Anforderungen ungefähr erfüllt könnte ein guter Einstieg sein.
Das würde ich jetzt so nicht pauschal unterschreiben wollen! Meiner Meinung nach gibt es für beides seine Daseinsberechtigung.
Gruß icsAT
gerne, wobei ich es persönlich meist nicht zielführend finde hier anderen komplett fertige Lösungen zu präsentieren, da imho häufig der Lerneffekt dadurch in Richtung Null geht. Da Du aber bisher noch nicht mit VB Script gearbeitet hast und ich Dir kein passendes Tutorial anbieten konnte habe ich gedacht ein Beispiel, dass Deine Anforderungen ungefähr erfüllt könnte ein guter Einstieg sein.
Das würde ich jetzt so nicht pauschal unterschreiben wollen! Meiner Meinung nach gibt es für beides seine Daseinsberechtigung.
Gruß icsAT