使用PowerShell替换字符串中包含$的字符串
我正在尝试使用PowerShell做一个简单的查找和替换。我使用模板文本文件,并在需要更改的值前面使用使用PowerShell替换字符串中包含$的字符串,powershell,Powershell,我正在尝试使用PowerShell做一个简单的查找和替换。我使用模板文本文件,并在需要更改的值前面使用$ 例如: (Get-Content "D:\test") | Foreach-Object {$_ -replace "`$TBQUAL", "DBO"} | Set-Content "D:\test" 它应该找到行OWNER=$TBQUAL,并使其看起来像OWNER=DBO 我在$TBQUAL前面使用逃生键,运气不好。为了测试它是否工作,如果我从前面移除$,它将替换TBQUAL,并使它看起
$
例如:
(Get-Content "D:\test") | Foreach-Object {$_ -replace "`$TBQUAL", "DBO"} | Set-Content "D:\test"
它应该找到行OWNER=$TBQUAL
,并使其看起来像OWNER=DBO
我在
$TBQUAL
前面使用逃生键,运气不好。为了测试它是否工作,如果我从前面移除$
,它将替换TBQUAL
,并使它看起来像OWNER=$DBO两件事来让它工作:
对字符串使用单引号,以便$
不会被解释为要展开的变量的开头
使用反斜杠“\”对$
进行转义,以便正则表达式解析器按字面意思理解它
比如说,
PS C:\> 'Has a $sign in it' -replace 'a \$sign', 'no dollar sign'
Has no dollar sign in it
如果您没有在替换中使用,您可以这样做一个简单(快速)的替换:
Foreach-Object {$_.Replace('$TBQUAL', 'DBO')}