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

如何编写PowerShell脚本定向替换指定开头行的行尾字符串

PowerShell定向行替换方案

原有脚本使用-Raw参数一次性读取全文件做全局替换,会匹配所有位置的</ab></cb>字符串,无法实现定向替换需求,改用逐行判断处理即可满足要求。

可直接运行的脚本

目标文件路径已按需求设置为C:\Users\User1\File\Summary.txt,脚本运行后会直接覆盖原文件,保留原文件名:

$targetFile = "C:\Users\User1\File\Summary.txt"
$processedContent = Get-Content -Path $targetFile | ForEach-Object {
    $currentLine = $_
    # 同时校验行开头、行尾规则
    if ($currentLine.StartsWith('<a><b>Data') -and $currentLine.EndsWith('</ab></cb>')) {
        # 截除行尾目标字符串,替换为新结尾
        $currentLine.Substring(0, $currentLine.Length - 10) + '</x>'
    } else {
        # 不符合规则的行原样保留
        $currentLine
    }
}
$processedContent | Set-Content -Path $targetFile

实现逻辑

  • 逐行读取文件内容,不做全文件全局匹配,避免误改非目标内容
  • 使用.NET字符串原生的StartsWith和EndsWith方法做行首行尾校验,无正则转义问题,执行效率更高
  • 对符合规则的行,仅替换末尾固定长度的</ab></cb>字符串(长度共10个字符),行中间内容完全不改动
  • 处理完成后直接写回原文件路径,文件名无任何变更

注意:如果处理后文件出现乱码,可以给Set-Content命令添加对应编码参数,比如原文件为UTF8编码时,写回命令改为$processedContent | Set-Content -Path $targetFile -Encoding UTF8即可。

效果示例

原符合规则的行:

<a><b>Data:</y> 12345678</ab></cb>

处理后结果:

<a><b>Data:</y> 12345678</x>

所有不满足“以<a><b>Data开头、以</ab></cb>结尾”规则的行,不会被做任何修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 14:54:23