繁体   English   中英

在多行之间替换两个单词之间的文件文本

[英]Replace file text between two words across multiple lines

给定一个文本文件,我想替换两个给定单词之间的所有文本(跨多行)。

文本文件示例:

line1
line2
XstartX
line4
XendX
line5

如果我想用YYY替换startend之间的所有文本,结果文件应该是

line1
line2
XstartYYYendX
line5

我试过了

$file='C:\Path\to\file.txt'

$raw = Get-Content $file -Raw
$raw -ireplace '(?<=start).+?(?=end)', 'YYY'
$raw | Set-Content $file

但是......没有运气!

如评论中所述,您需要启用s修饰符才能使用.+? 部分也匹配换行符。
作为安斯加尔提到m时并不需要在这里,但可以提高start通过在锚定线用开始(?<=^xstart)

$file='C:\Path\to\file.txt'
$raw = Get-Content $file -Raw
$raw = $raw -ireplace '(?s)(?<=start).+?(?=end)', 'YYY'
$raw | Set-Content $file

要么

$file='C:\Path\to\file.txt'
$raw = (Get-Content $file -Raw) -ireplace '(?s)(?<=start).+?(?=end)', 'YYY'
$raw | Set-Content $file

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM