pc4ever2use
Goto Top

Textdatei - Unwichtige Textteile löschen - Suchen und Ersetzen (mit DOS, bat, Batch, Tool)

Hallo. Ich habe eine große Textdatei, die wegen der Größe mit der Notepad.exe nicht zu öffnen ist. Sie enthält wichtige und unwichtige Textteile und ist vereinfacht dargestellt wie folgt aufgebaut:

<spam> Quatsch Quatsch Quatsch Quatsch Quatsch Quatsch Quatsch </spam> <important> Wichtig Wichtig </important> <spam> Unsinn Unsinn Unsinn Unsinn Unsinn </spam> <important> Toll Toll Toll </important> <spam> Quatsch Quatsch Quatsch Quatsch Quatsch Quatsch Quatsch </spam> <important> Sehr Interessant </important> <spam> Bla Bla Bla </spam> <spam> Quatsch Quatsch Quatsch Quatsch Quatsch Quatsch Quatsch </spam> <important> Wichtig Wichtig </important> <spam> Unsinn Unsinn Unsinn Unsinn Unsinn </spam> <important> Toll Toll Toll </important> <spam> Quatsch Quatsch Quatsch Quatsch Quatsch Quatsch Quatsch </spam> <important> Sehr Interessant </important> <spam> Bla Bla Bla </spam>

Wie kann ich die unwichtigen Textteile aus der Datei entfernen und die Wichtigen Textteile untereinander auflisten? Das Ergebnis soll also wie folgt aussehen:

Wichtig WichtigToll Toll TollSehr InteressantWichtig WichtigToll Toll TollSehr Interessant

Ich habe es durch Suchen & Ersetzen mit dem Programm TextCrawler und HTML-Kommentaren versucht. Dabei habe ich <spam> durch <!-- ersetzt und <important> durch --><br> ersetzt und das ganze dann im Browser geöffnet. Dazu musste ich die Datei vorher teilen ...sehr kompliziert.

Geht das auch einfacher, mit 1-2 Klicks z.B. mit DOS als .bat / Batch Datei oder mit einem kleinen Tool?

Wichtig ist, dass die Datei auch Sonderzeichen z.B. < { [ enthält!

Danke

Content-Key: 219573

Url: https://administrator.de/contentid/219573

Printed on: April 16, 2024 at 16:04 o'clock

Member: bastla
bastla Oct 17, 2013 at 05:55:20 (UTC)
Goto Top
Hallo pc4ever2use und willkommen im Forum!

Lässt sich das reduzieren auf: "Behalte nur Textteile zwischen <important>-Tags und schreibe diese jeweils in eine eigene Zeile"?

Grüße
bastla
Member: pc4ever2use
pc4ever2use Oct 17, 2013 at 06:54:08 (UTC)
Goto Top
Ja genau das meinte ich! ...Vielen Dank, dass Du es noch mal zusammengefasst hast.
Member: bastla
bastla Oct 17, 2013 at 13:01:01 (UTC)
Goto Top
Hallo pc4ever2use!

Dann versuch es mal mit folgendem VBScript:
Ein = "D:\Gesamt.txt" 'Quelldatei  
Aus = "D:\Wichtig.txt" 'Zieldatei  

Von = "<important>" 'Markierung "Beginn wichtiger Teil"  
Bis = "</important>" 'Markierung "Ende wichtiger Teil"  

Set fso = CreateObject("Scripting.FileSystemObject")  
Set DatEin = fso.OpenTextFile(Ein)
Set DatAus = fso.CreateTextFile(Aus)
LVon = Len(Von) 'Länge nur einmal (vor der Schleife) ermitteln  
LBis = Len(Bis) 'Länge nur einmal (vor der Schleife) ermitteln  

Do Until DatEin.AtEndOfStream 'alle Zeilen der Quelldatei durchlaufen  
    Zeile = DatEin.ReadLine 'Zeile einlesen  
    PosVon = InStr(Zeile, Von) 'Startposition des "wichtigen Teils" ermitteln  
    Do While PosVon <> 0 'solange es "wichtige Teile" gibt  
        Zeile = Mid(Zeile, PosVon + LVon) 'unwichtigen Teil am Zeilenanfang und Von-Tag entfernen  
        PosBis = InStr(Zeile, Bis) 'Endposition des "wcihtigen Teils" ermitteln  
        If PosBis = 0 Then 'wenn keine Endposition gefunden, gesamten Zeilenrest verwenden  
            DatAus.WriteLine Trim(Zeile) '"wichtigen Teil" in Datei schreiben  
        Else
            DatAus.WriteLine Trim(Left(Zeile, PosBis - 1)) ''"wichtigen Teil" ermitteln und in Datei schreiben  
            Zeile = Mid(Zeile, PosBis + LBis) 'unwichtigen Teil am Zeilenanfang und Bis-Tag entfernen  
        End If
        PosVon = InStr(Zeile, Von) ''Startposition des (nächsten) "wichtigen Teils" ermitteln  
    Loop
Loop
Annahme: Es können sich mehrere "wichtige Teile" in einer Zeile befinden, aber kein "wichtiger Teil" ist durch eine Zeilenschaltung unterbrochen.

Grüße
bastla