2010-07-08 192 views
4

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

例子:

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

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

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

回答

5

两件事情来得到这个工作:

  1. 使用单引号为你的字符串,使$不被解释为一个变量的开始扩大。
  2. 使用反斜杠“\”来转义$,以便正则表达式解析器从字面上获取它。

例如,

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

工作就像一个魅力, 谢谢。 – Chadit 2010-07-08 20:53:05

1

如果你是不是在你更换使用regular expressions,你可以做一个简单的(快速)替换这样的:

Foreach-Object {$_.Replace('$TBQUAL', 'DBO')} 
相关问题