首页 > 解决方案 > 如何通过powershell替换多行文件

问题描述

我有一个 httpd.conf 文件,其中包含一些部分,例如 -

<ThisBlock *:4443>
    This Part can contain any random lines
    This Part can contain any random lines
    This Part can contain any random lines
</ThisBlock>

我想要的是使用 powershell 或 cmd 将上面的块与这个新块交换

<ThisBlock *:4443>
    This Part contain Static lines
    This Part contain Static lines
</ThisBlock>

标签: powershellreplacecmd

解决方案


您可以使用带有选项 SingleLine 的正则表达式:标记之间的所有文本都被替换

$newtext = "<ThisBlock *:4443>
    This Part contain Static lines
    This Part contain Static lines
</ThisBlock>"


$text = Get-Content -Path C:\httpd.conf  -Encoding UTF8 -raw
$option = [System.Text.RegularExpressions.RegexOptions]::Singleline 
#i have to escape the char \ becasue is special char
$pattern = "<ThisBlock \*:4443>.*?</ThisBlock>"
$rgx = [regex]::new($pattern, $option)

$result = $rgx.Replace($text, $newtext)
$result

推荐阅读