raaja89
Goto Top

Powershell - In Textdatei suchen und ersetzen

Hallo Zusammen,
ich habe einen Textdatei mit vielen aufeinander folgendenden Leerzeichen und wo an diversen Stellen Überschriften stehen.
Ungefähr so:

        Thema1 - Hamburg

        Sehenswürdigkeiten..

        Lokale..

        Parkplätze..

 
        Thema2 - Köln

        Sehenswürdigkeiten..

        Lokle..

        Parkplätze.. 

Ich möchte gerne alle beginnenden Leerzeichen entfernen und alle Überschriften (Thema..).

Alles was ich bisher versucht habe, hat leider nicht das gewünschte Ergebnis gebracht.

Dachte etwas in diese Richtung:

1. Zeilen der Textdatei zählen
2. Per For-Schleife in Arrays packen
3. Mit TrimStart() Leerzeichen entfernen?
4. Mit Where-Object irgendwie mit - like "Thema*" die Array Variable löschen?
5. Alle Arrays in die vorhandenen Textdatei schreiben


Evtl. geht's auch einfacher und übersichtlicher?
Würde mich über jede Hilfe freuen.

Vielen Dank.

Content-Key: 322830

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

Ausgedruckt am: 19.03.2024 um 03:03 Uhr

Mitglied: 131381
131381 04.12.2016 aktualisiert um 09:53:40 Uhr
Goto Top
Evtl. geht's auch einfacher und übersichtlicher?
Mit ein bisschen Regex keine große Sache face-wink
(gc 'c:\datei.txt' | ?{$_ -notmatch '^\s*$|^\s*Thema.*'}) -replace '^\s+','' | set-content 'c:\datei.txt'  

Gruß
Mitglied: Raaja89
Raaja89 05.12.2016 um 15:30:13 Uhr
Goto Top
Vielen vielen Dank, sieht sehr gut aus face-smile
Gibt es auch die Möglichkeit weitere Zeilen mit anderen Begriffen verschwinden zu lassen?
Mitglied: 131381
131381 05.12.2016 aktualisiert um 15:37:41 Uhr
Goto Top
Zitat von @Raaja89:
Gibt es auch die Möglichkeit weitere Zeilen mit anderen Begriffen verschwinden zu lassen?
Klar, einfach den Regex anpassen das (|) trennt die einzelnen Patterns (OR-Verknüpfung) voneinander.
Mitglied: Raaja89
Raaja89 06.12.2016 um 16:22:04 Uhr
Goto Top
Und nochmals vielen Dank. Leider komme ich nach einigen Versuchen gerade irgendwie nicht weiter..

Sobald das Wort nicht am Anfang einer Zeile steht, wird die Zeile leider nicht entfernt..

Bsp:

        Thema1 - Hamburg <-------------------- Zeile löschen
        Sehenswürdigkeiten..
        Lokale..
        Parkplätze..
 
        Zweites Thema <--------------------------- Zeile löschen
        Sehenswürdigkeiten..
        Lokle..
        Parkplätze.. 

        Dritte Überschrift <------------------------ Zeile löschen
        Lokale

Weiterhin gilt:

- Alle beginnenden Leerzeichen entfernen
- Alle Zeilen mit dem Wort "Thema" entfernen
- Zusätzlich die Zeile mit den Wörtern "Dritte Überschrift" entfernen

Ich würde mich sehr freuen, wenn du mir nochmal kurz helfen könntest.

Vielen Dank im Voraus.

Grüße
Mitglied: 131381
Lösung 131381 06.12.2016 um 16:27:13 Uhr
Goto Top
(gc 'c:\datei.txt' | ?{$_ -notmatch '^\s*$|Thema|Dritte Überschrift'}) -replace '^\s+','' | set-content 'c:\datei.txt'  
Lesen: Regular Expressions Tutorial