1

我必须替换文件中的值。这适用于使用此命令的普通文本

(Get-Content $file) | Foreach-Object {$_ -replace "SEARCH", "REPLACE"} | Set-Content $file

但是现在,搜索文本是“$(SEARCH)”(不带引号)。用 '`$' 转义 '$' 的反斜杠不起作用:

(Get-Content $file) | Foreach-Object {$_ -replace "`$(SEARCH)", "BLA"} | Set-Content $file

有任何想法吗?谢谢你。

4

3 回答 3

2

-replace运算符实际上是正则表达式替换而不是简单的字符串替换,因此您必须转义正则表达式:

(Get-Content $file) | Foreach-Object {$_ -replace '\$\(SEARCH\)', "BLA"} | Set-Content $file

请注意,您可以通过在字符串文字周围使用双引号 (") 的单引号 (') 来抑制字符串插值,我在上面已经完成了。

于 2015-05-22T05:26:31.673 回答
0

麦金顿,

您可以尝试以下方法:

(Get-Content $file) | Foreach-Object {$_.replace('$(SEARCH)', "BLA"} | Set-Content $file
于 2015-05-22T06:19:28.457 回答
0

稍微(甚至更多)更快

sc $file ((gc $file -Raw) -replace '\$\(search\)','BLAHH')
于 2015-05-22T23:28:13.630 回答