我必须替换文件中的值。这适用于使用此命令的普通文本
(Get-Content $file) | Foreach-Object {$_ -replace "SEARCH", "REPLACE"} | Set-Content $file
但是现在,搜索文本是" $(SEARCH)" (没有引号)。反斜杠逃避' $'用'`$'不起作用:
(Get-Content $file) | Foreach-Object {$_ -replace "`$(SEARCH)", "BLA"} | Set-Content $file
有什么想法吗?谢谢。
答案 0 :(得分:2)
-replace
运算符实际上是regular expression replacement而不是简单的字符串替换,因此您必须转义正则表达式:
(Get-Content $file) | Foreach-Object {$_ -replace '\$\(SEARCH\)', "BLA"} | Set-Content $file
请注意,您可以通过在字符串文字周围使用双引号(“)的单引号(')来抑制字符串插值,我已在上面做过。
答案 1 :(得分:0)
Macintron,
您可以尝试以下内容:
(Get-Content $file) | Foreach-Object {$_.replace('$(SEARCH)', "BLA"} | Set-Content $file
答案 2 :(得分:0)
稍微(甚至更快)
sc $file ((gc $file -Raw) -replace '\$\(search\)','BLAHH')