Zeichen in Textdatei ersetzen via Powershell
Moin,
ich kriege es nicht hin in einer vorhandenen Textdatei ein bestimmtes Zeichen durch einen Unterstrich _ zu ersetzen.
Meine Datei :
Meine Powershellzeile :
Ich bekomme nur eine Ausgabe wie :
(Vor dem "TEST" ist das Leerzeichen eingesetzt).
Was mache ich falsch ?
ich kriege es nicht hin in einer vorhandenen Textdatei ein bestimmtes Zeichen durch einen Unterstrich _ zu ersetzen.
Meine Datei :
TEST^_05.06.29-14:53:00-DST-1.3.12.2.1107.5.2.6.14420_Text1^Text2
Meine Powershellzeile :
((Get-Content -path I:\pfad\tmp\datei.dat -Raw) -replace '^',' ') | Set-Content -Path I:\pfad\tmp\datei_neu.dat
Ich bekomme nur eine Ausgabe wie :
TEST^_05.06.29-14:53:00-DST-1.3.12.2.1107.5.2.6.14420_Text1^Text2
Was mache ich falsch ?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 1747762075
Url: https://administrator.de/contentid/1747762075
Ausgedruckt am: 17.11.2024 um 03:11 Uhr
2 Kommentare
Neuester Kommentar
Servus again @Crashzero ,
Anfangs- und Endezeichen
Alternative ohne -replace Operator und der "normalen" Replace Methode der String Klasse, hier brauchst du nicht escapen da diese die Zeichenkette als Literal verarbeitet.
Als Wochenend-Lektüre empfohlen:
Powershell Leitfaden für Anfänger
Regular Expressions Tutorial
Grüße Uwe
Was mache ich falsch ?
du musst das ^ (Caret) mit einem Backslash escapen (\^) wenn du den -replace Operator nutzen willst, denn dieser nutzt Regular-Expression Syntax und in dieser bedeutet das ^ = "Anfang eines Strings" und das ist ein Non-Capturing Sonderzeichen in Regular Expression Syntax, um es literal zu verwenden musst du es escapen.Anfangs- und Endezeichen
(Get-Content -path I:\pfad\tmp\datei.dat -Raw) -replace '\^','_' | Set-Content -Path I:\pfad\tmp\datei_neu.dat
(Get-Content -path I:\pfad\tmp\datei.dat -Raw).replace('^','_') | Set-Content -Path I:\pfad\tmp\datei_neu.dat
Powershell Leitfaden für Anfänger
Regular Expressions Tutorial
Grüße Uwe