Powershell ersetzen verlieren Zeilenumbrüche

8

Ich bin ein Neuling in Powershell. Ich habe ein einfaches Powershell-Skript, das nur Text ersetzt, aber ich fand, dass die Regex-Ersetzung meine mehrzeilige Datenquelle in einen einzigen Linientext umwandelt, wenn die Ausgabe erzeugt wird. Ich möchte, dass die Zeilenumbrüche erhalten bleiben. Hier ist die dumme Down-Version des Skripts.

%Vor%

Sie können einen Testdateiaufruf textfile.txt mit einfachen Zeilen wie diesem erstellen, um es zu testen

%Vor%

Habe ich etwas offensichtlich übersehen?

Danke, Fadrian

    
Fadrian Sudaman 28.04.2010, 03:17
quelle

1 Antwort

17

Ihr Problem hier ist, dass Get-Content eine string[] (mit einem Element für jede Zeile in der Quelldatei) zurückgibt, während [regex]::Replace eine Zeichenfolge erwartet. Aus diesem Grund wird das Array zuerst in eine Zeichenfolge umgewandelt, die einfach alle Objekte zusammenfasst.

PowerShell stellt einen Operator -replace zur Verfügung, der diesen Fall eleganter behandelt:

%Vor%

Der Operator -replace operiert auf jedem Element eines Arrays einzeln, wenn es auf ein Array angewendet wird.

Und ja, es werden reguläre Ausdrücke gefunden und ersetzt. Zum Beispiel:

%Vor%

Lesen Sie ein bisschen mehr hier und hier .

    
James Kolpack 28.04.2010, 03:40
quelle

Tags und Links