Reputation: 965
I am trying to use PowerShell do a simple find and replace. I use template text files and use $
in front of values that need to be changed.
Example:
(Get-Content "D:\test") | Foreach-Object {$_ -replace "`$TBQUAL", "DBO"} | Set-Content "D:\test"
It should find the line OWNER=$TBQUAL
and make it look like OWNER=DBO
.
I am using the escape in front of $TBQUAL
with no luck. To test that it is working if I removed the $
from the front, it would replace TBQUAL
and made it look like OWNER=$DBO
.
Upvotes: 4
Views: 10824
Reputation: 1291
If you aren't using regular expressions in your replacement, you can do a simple (and fast) replace like this:
Foreach-Object {$_.Replace('$TBQUAL', 'DBO')}
Upvotes: 1
Reputation: 29450
Two things to get this to work:
$
is not interpreted as the start of a variable to be expanded.$
using a backslash "\" so the regular expression parser takes it literally.For example,
PS C:\> 'Has a $sign in it' -replace 'a \$sign', 'no dollar sign'
Has no dollar sign in it
Upvotes: 6