我正在使用Powershell替换文本文件中的字符串。
在 file.txt 中将 String 1 替换为 String 2 我使用
(Get-Content file.ps1) | Foreach-Object { $_ -replace 'String 1', 'String 2'} | Set-Content file.txt
即使替换字符,例如 - 和#
,它也能很好地工作需要用 [字符替换字符串,但它不起作用。我需要用 -state stopped 替换 -state [VMstate] :: stopped 但是它不能用于
(Get-Content TEMP_config.ps1) | Foreach-Object { $_ -replace '-state [VMstate]::stopped', '-state stopped'} | Set-Content TEMP_config.ps1
如何找到 [ char?
答案 0 :(得分:6)
替换operator使用regular expressions来匹配文字。搜索文字文本的一种方法是转义搜索文本:
$search = [regex]::escape('[MyText]')
(Get-Content file.ps1) | Foreach-Object { $_ -replace $search , 'String 2'} | Set-Content file.txt
答案 1 :(得分:4)
你必须逃避[
:
$_ -replace '-state \[VMstate]::stopped', '-state stopped'
如果您不确定要逃避什么,请使用[Regex]::escape
答案 2 :(得分:2)
您可以使用“\ [”而不是“[”(以反斜杠为前缀)来转义[character