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

如何用PowerShell提取方括号内数字并插入至下一行对应位置

解决方案

可以通过逐行遍历文件内容,记录从方括号中提取的编号,再在后续对应行中替换内容。以下是可实现需求的代码:

$inputPath = "D:\Users\j\Desktop\New folder\Environment-p.ini"
$outputPath = "D:\Users\j\Desktop\New folder\Environment-p mod.ini"
$currentNumber = $null

Get-Content $inputPath | ForEach-Object {
    # 匹配方括号内的编号并保存
    if ($_ -match '(?<=\[)\d+(?=\])') {
        $currentNumber = $matches[0]
        $_  # 输出原行
    }
    # 对目标行插入已保存的编号
    elseif ($_ -match 'id = Item\s*$') {
        $_ -replace 'id = Item\s*$', "id = Item $currentNumber"
    }
    # 其他行直接输出
    else {
        $_
    }
} | Set-Content $outputPath -Encoding UTF8

代码说明

  • 使用Get-Content读取文件内容并逐行处理
  • 正则表达式(?<=\[)\d+(?=\])专门匹配方括号内的数字编号,提取后存入变量暂存
  • 针对包含id = Item的目标行,用正则替换将编号追加到Item之后
  • 非目标行保持原样输出,最终通过Set-Content写入修改后的文件

原代码失败原因

  • 第一段代码存在语法错误:管道流中不能直接执行变量赋值操作,且select-string的输出处理逻辑混乱
  • 第二段代码错误使用-replace语法,同时未正确关联匹配到的编号和对应的目标行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 01:25:14