Использование PowerShell для замены строки, содержащей $ в строке - PullRequest
4 голосов
/ 09 июля 2010

Я пытаюсь использовать PowerShell, просто найти и заменить.Я использую текстовые файлы шаблона и использую $ перед значениями, которые необходимо изменить.

Пример:

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

Должен найти строку OWNER=$TBQUAL и сделать ее похожей наOWNER=DBO.

Я использую побег перед $TBQUAL без удачи.Чтобы проверить, работает ли он, если я удалил $ спереди, он заменил бы TBQUAL и сделал бы его похожим на OWNER=$DBO.

Ответы [ 2 ]

5 голосов
/ 09 июля 2010

Две вещи, чтобы заставить это работать:

  1. Используйте одинарные кавычки для строк, чтобы $ не интерпретировалось как начало раскрываемой переменной.
  2. Избегайте $, используя обратную косую черту "\", чтобы синтаксический анализатор регулярных выражений воспринимал это буквально.

Например,

PS C:\> 'Has a $sign in it' -replace 'a \$sign', 'no dollar sign'
Has no dollar sign in it
1 голос
/ 02 июня 2011

Если вы не используете регулярные выражения при замене, вы можете сделать простую (и быструю) замену, например так:

Foreach-Object {$_.Replace('$TBQUAL', 'DBO')}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...