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
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:
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%Tags und Links regex powershell