![Verwenden von Powershell zum Bereinigen einer Textdatei](https://rvso.com/image/668805/Verwenden%20von%20Powershell%20zum%20Bereinigen%20einer%20Textdatei.png)
Ich habe damit zu kämpfen und frage mich, ob mir jemand helfen kann. Ich habe eine große Textdatei, die zusätzliche Daten enthält, die ich entfernen möchte. Hier ist ein Beispiel der Eingabedatei:
Text In Page - 1
S
Dept
l<m RKB)
"1915
slightly 234234
"sil dsf 56
"gr
gl
1920 100
1925 100
1930 100 Cls
"1935 100 Cl
Text In Page - 2
l<m RKB)
"1915
slightly
"sil
"gr
glauc
1920 100
1925 100
1930 100 Cls
"1935 100 Cl
Ich möchte Folgendes entfernen:
- Alle leeren Zeilen
- Alle " am Zeilenanfang
- Alle Zeilen, die mit einem Buchstaben AZ, az beginnen
Mit dem obigen Beispiel bliebe mir also
1915
1920 100
1925 100
1930 100 Cls
1935 100 Cl
1915
1920 100
1925 100
1930 100 Cls
1935 100 Cl
Antwort1
Ich denke:
(gc D:\test.txt) -replace '^"' | sls '\S' | sls -NotMatch '^[A-Za-z]' | sc out.txt
Was bedeutet:
- Holen Sie sich die Zeilen der Datei und ersetzen Sie das erste Zeichen, wenn es sich um ein Anführungszeichen handelt, durch nichts.
- Zeilen auswählen, die mit „keine Leerzeichen“ übereinstimmen (d. h. leere Zeilen werden herausgefiltert)
- Wählen Sie Zeilen aus, die nicht mit A-Za-z beginnen
- schreibt die Ergebnisse in out.txt
Es gibt verschiedene Möglichkeiten, die Langversion zu schreiben, je nachdem, wie sehr Sie die Verkettung von Dingen mit der Pipeline gegenüber der wiederholten Arbeit mit Variablen bevorzugen. Hier geht es jedoch folgendermaßen:
$lines = Get-Content D:\test.txt
$lines = $lines -replace '^"'
$lines = $lines | Select-String '\S'
$lines = $lines | Select-String -NotMatch '^[A-Za-z]'
$lines | Set-Content out.txt