powershell - 如何通过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>
解决方案
您可以使用带有选项 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
推荐阅读
- java - 当我将我的 java 类转换为 jsonobject 时,它会重新调整类成员的顺序
- javascript - 从输入字段复制值
- azure - 星期几的 Azure Log Analytics 查询
- java - 如果使用 Collection 的 Firestore 中不存在数据
- scala - 我怎样才能得到如下的输出 jn spark scala
- reactjs - ReactJS/Springboot- 被 CORS 策略阻止:没有“访问控制允许来源”
- python - 如何用pygal包装y轴标签
- android-security - Android 预启动错误 - 不安全的密码模式
- python - 计算一组元组的平均距离的函数(Python)
- react-admin - 在 simpleform 中反应管理自定义组件