You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell提取指定内容后如何保留文件换行格式?

解决PowerShell提取文件区块时丢失换行的问题

问题根源

你当前代码的问题出在文件读取方式:用Get-Content不加-Raw参数时,文件会被拆分为字符串数组,当直接传入[regex]::match时,数组会自动拼接成以空格分隔的单字符串,原文件中的换行全部丢失,导致匹配结果自然没有换行结构。

修改方案

直接使用-Raw参数读取完整文件(保留所有换行符),同时给正则添加单行模式修饰符(?s),让正则中的.能匹配换行符,从而正确捕获多行内容:

# 读取完整文件,保留所有换行
$content = Get-Content "Myfile.txt" -Raw

# 正则添加(?s)修饰符,允许.匹配换行符
$pattern = "(?s)-- #Start(.*?)-- #End"

# 提取目标内容并去除前后空白(包括多余换行)
$matchedContent = [regex]::Match($content, $pattern).Groups[1].Value.Trim()

# 写入新文件,保留换行
$matchedContent | Out-File "Newfile.txt" -Encoding utf8

简化说明

  • -Raw:将整个文件读取为单个字符串,完整保留原文件的换行、空白等格式
  • (?s):正则单行模式修饰符,让.*?可以跨多行匹配目标区块
  • 无需使用StringBuilder,直接将匹配结果输出即可实现需求

执行后,Newfile.txt的内容会和预期一致:

This is more content
across different lines
etc etc

内容的提问来源于stack exchange,提问作者amateur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 15:50:15