2010-07-08 215 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')} 
相關問題