2016-06-20 15 views
0

Zum Beispiel habe ich eine Textdatei bekam Autoren von Powershell-Skripts angibt, sieht jede Zeile wie:Powershell: Wie ersetzt man zuerst ":" in einer Zeichenkette als ","?

Hello world.ps1:John Smith 
Dowork.ps1:Blake Benn 

ich finden wollen zuerst „:“ in jeder Zeile und ersetzen mit „“ so kann ich Hier finden Sie eine cSV-Datei,

Hello world.ps1,John Smith 
Dowork.ps1,Blake Benn 

ich mit "replace" versucht, aber scheiterte:

"Hello World.ps1:John Smith" -replace ":" "," 

At line:1 char:43 
+ "Hello World.ps1:John Smith" -replace ":" "," 
+           ~~~ 
Unexpected token '","' in expression or statement. 
    + CategoryInfo   : ParserError: (:) [], 
    ParentContainsErrorRecordException 
    + FullyQualifiedErrorId : UnexpectedToken 

Wie dies zu tun? Vielen Dank!

+0

Wenn Sie wirklich nur ersetzen möchten * die erste ':' * Verwenden '-replace '^ (*.?): (. *)'," $ 1, $ 2'' statt '-replace ":", "," ' –

Antwort

1

Ihre Syntax für den Operator -replace ist nicht korrekt. Lesen Sie die Hilfe für den Bediener sorgfältig - help about_Comparison_Operators. Sie vermissen eine , zwischen den Suchen und Ersetzen Zeichenfolgen.

PS C:\> "Hello World.ps1:John Smith" -replace ":","," 
Hello World.ps1,John Smith 
+0

Aber denken Sie daran, wie @MathiasRJessen in einem separaten Kommentar darauf hingewiesen hat, dass dies * alle * Vorkommen ersetzen wird, nicht nur das * erste * Vorkommen, wie es die Frage erfordert. Wenn es nur einen gibt, dann ist das ausreichend. –

+0

Korrekt - dies scheint jedoch kein Problem zu sein, basierend auf den Beispieldaten des OPs. –