Powershell:如何将字符串中的第一个“:”替换为“,”?
Posted
技术标签:
【中文标题】Powershell:如何将字符串中的第一个“:”替换为“,”?【英文标题】:Powershell: how to replace first ":" in a string to be ","? 【发布时间】:2016-06-20 03:02:34 【问题描述】:例如,我有一个指示 powershell 脚本编写者的文本文件,每一行如下所示:
Hello world.ps1:John Smith
Dowork.ps1:Blake Benn
我希望在每一行中找到第一个“:”并用“,”替换,这样我就可以得到一个 csv 文件,
Hello world.ps1,John Smith
Dowork.ps1,Blake Benn
我尝试使用“-replace”,但失败了:
"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
如何做到这一点?谢谢!
【问题讨论】:
如果你真的想只替换第一个:
,请使用-replace '^(.*?):(.*)','$1,$2'
而不是-replace ":",","
【参考方案1】:
-replace
运算符的语法不正确。仔细阅读操作员帮助 - help about_Comparison_Operators
。您在查找和替换字符串之间缺少,
。
PS C:\> "Hello World.ps1:John Smith" -replace ":",","
Hello World.ps1,John Smith
【讨论】:
但是请记住,正如@MathiasRJessen 在单独的评论中指出的那样,这将替换 all 出现,而不仅仅是 first 出现问题要求。如果只有一个,是的,这就足够了。 正确 - 但是根据 OP 的样本数据,这似乎不是问题。以上是关于Powershell:如何将字符串中的第一个“:”替换为“,”?的主要内容,如果未能解决你的问题,请参考以下文章
将相同的字符串附加到PowerShell中CSV列中的所有变量