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

求助:使用PowerShell替换CSV中指定行的目标字符串

问题解决:PowerShell批量替换CSV指定行内容

你的代码存在两个核心问题:

  • 语法错误:ForEach-Object需要用大括号{}包裹处理逻辑,而非小括号()
  • 逻辑缺失:只处理了包含"MAHLE AM GmbH"的行,未保留不匹配的行,会导致输出文件丢失原有的非MAHLE条目

修正后的代码

Get-Content "C:\Users\SvcBI\Documents\Autodoc\Autodoc_Temp.csv" | 
    ForEach-Object {
        # 判断当前行是否包含目标字符串
        if ($_ -match "MAHLE AM GmbH") {
            # 仅替换该行中最后一列的"4543"为"287"(引号确保精准匹配)
            $_ -replace '"4543"', '"287"'
        } else {
            # 不匹配的行直接保留原内容
            $_
        }
    } | 
    Set-Content "C:\Users\SvcBI\Documents\Autodoc\POWERMAX_DK_2.csv"

更简洁的写法(用PowerShell三元运算符)

Get-Content "C:\Users\SvcBI\Documents\Autodoc\Autodoc_Temp.csv" | 
    ForEach-Object { $_ -match "MAHLE AM GmbH" ? ($_ -replace '"4543"', '"287"') : $_ } | 
    Set-Content "C:\Users\SvcBI\Documents\Autodoc\POWERMAX_DK_2.csv"

关键说明

  • 替换时加上引号"4543"是为了避免误替换行中其他位置可能出现的相同数字,确保只修改最后一列的目标值
  • 保留不匹配的行保证输出文件和原文件的行数一致,不会丢失数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 17:27:36