使用PowerShell替换字符串中包含$的字符串

时间:2010-07-08 20:37:13

标签: powershell

我正在尝试使用PowerShell做一个简单的查找和替换。我使用模板文本文件,并在需要更改的值前面使用$

示例:

(Get-Content "D:\test") | Foreach-Object {$_ -replace "`$TBQUAL", "DBO"} | Set-Content "D:\test"

它应该找到行OWNER=$TBQUAL并使其看起来像OWNER=DBO

我在$TBQUAL面前使用逃生而没有运气。要测试它是否正常,如果我从前面删除$,它将替换TBQUAL并使其看起来像OWNER=$DBO

2 个答案:

答案 0 :(得分:5)

要使其发挥作用的两件事:

  1. 对字符串使用单引号,以便$不会被解释为要展开的变量的开头。
  2. 使用反斜杠“\”转义$,以便正则表达式解析器从字面上理解它。
  3. 例如,

    PS C:\> 'Has a $sign in it' -replace 'a \$sign', 'no dollar sign'
    Has no dollar sign in it
    

答案 1 :(得分:1)

如果你没有在替换中使用regular expressions,你可以像这样做一个简单(快速)的替换:

Foreach-Object {$_.Replace('$TBQUAL', 'DBO')}