Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PowerShell替换字符串中包含$的字符串_Powershell - Fatal编程技术网

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

使用PowerShell替换字符串中包含$的字符串,powershell,Powershell,我正在尝试使用PowerShell做一个简单的查找和替换。我使用模板文本文件,并在需要更改的值前面使用$ 例如: (Get-Content "D:\test") | Foreach-Object {$_ -replace "`$TBQUAL", "DBO"} | Set-Content "D:\test" 它应该找到行OWNER=$TBQUAL,并使其看起来像OWNER=DBO 我在$TBQUAL前面使用逃生键,运气不好。为了测试它是否工作,如果我从前面移除$,它将替换TBQUAL,并使它看起

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

例如:

(Get-Content "D:\test") | Foreach-Object {$_ -replace "`$TBQUAL", "DBO"} | Set-Content "D:\test"
它应该找到行
OWNER=$TBQUAL
,并使其看起来像
OWNER=DBO


我在
$TBQUAL
前面使用逃生键,运气不好。为了测试它是否工作,如果我从前面移除
$
,它将替换
TBQUAL
,并使它看起来像
OWNER=$DBO

两件事来让它工作:

  • 对字符串使用单引号,以便
    $
    不会被解释为要展开的变量的开头
  • 使用反斜杠“\”对
    $
    进行转义,以便正则表达式解析器按字面意思理解它
  • 比如说,

    PS C:\> 'Has a $sign in it' -replace 'a \$sign', 'no dollar sign'
    Has no dollar sign in it
    
    如果您没有在替换中使用,您可以这样做一个简单(快速)的替换:

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