首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用powershell查找并替换文件中的$VARIABLE$

使用powershell查找并替换文件中的$VARIABLE$
EN

Stack Overflow用户
提问于 2015-10-02 21:02:08
回答 1查看 11.1K关注 0票数 3

我正在创建一个简单的powershell脚本来替换我们环境中的SubWCRev。所以我有很多包含变量的模板文件,比如$WCREV$等等。

我不能对这些变量进行简单的查找和替换..我无法正确地转义$字符。

查找和替换很简单;

代码语言:javascript
复制
function FindAndReplace {
param(
    [string]$inputFile, 
    [string]$outputFile,
    [string]$findString, 
    [string]$replaceString)
    (Get-Content $inputFile) | foreach {$_ -replace $findString, $replaceString} |
    Set-Content $outputFile
}

我已经尝试了$findString的许多替代方案。

尝试过;

代码语言:javascript
复制
$findString = '$WCREV$'
$findString = '`$WCREV`$'
$findString = "`$WCREV`$"
$findString = "$WCREV$" 

都不能让它工作。如果我只尝试WCREV,它会替换它,当然,然后我就剩下$..我想我可以修改我的模板,但这似乎是一个愚蠢的小问题,所以它可能是可行的,对吧?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-02 21:11:46

您正在使用支持正则表达式的-replace$是这里的行尾锚点。如果不需要正则表达式,那么只需使用字符串方法replace即可。

代码语言:javascript
复制
$findString = '$WCREV$'
(Get-Content $inputFile) | foreach {$_.replace($findString,$replaceString)}

要在代码中生成原始的$findString,您需要使用正则表达式转义字符,这是PowerShell的反斜杠,就像您正在尝试的那样。单引号对于防止PowerShell试图将字符串扩展为变量非常重要。以下两种方法都可以工作,但我的第一个代码片段是我建议的。

代码语言:javascript
复制
$findString = '\$WCREV\$'
$findString = [regex]::Escape('$WCREV$')
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32907784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档