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

PowerShell跨CSV比对列值并新增匹配列的实现方法

CSV列值关联匹配PowerShell实现

优化后可直接运行的脚本

# 导入两份源CSV文件
$report = Import-Csv -Path "C:\report.csv" -Encoding UTF8
$reference = Import-Csv -Path "C:\team.csv" -Encoding UTF8

# 逐行处理收集匹配结果
$output = foreach ($line in $report) {
    # 匹配规则:setup列以main值开头,或responsible列等于main值
    $match = $reference | Where-Object {
        $line.Setup -like "$($_.Main)*" -or $line.Responsible -eq $_.Main
    } | Select-Object -First 1

    # 无匹配项直接跳过当前行,不写入结果
    if (-not $match) { continue }

    # 构造输出行,保留原有三列+新增team列
    [PSCustomObject]@{
        type        = $line.type
        setup       = $line.setup
        responsible = $line.responsible
        team        = $match.Team
    }
}

# 一次性导出所有结果,避免逐行追加的性能损耗
$output | Export-Csv -Path "C:\Output.csv" -NoTypeInformation -Encoding UTF8

对应问题解决说明

  • 无匹配行过滤:脚本检测到当前行在参考表中找不到对应匹配项时,直接通过continue跳过,不会写入最终输出文件
  • 匹配逻辑适配:setup列采用前缀匹配规则,只要setup值以参考表的main值开头就算命中,满足“比对setup列开头部分与main列匹配”的要求;同时保留responsible列和main值的精确匹配规则,和给出的期望输出完全对齐
  • 简洁性优化:去掉原脚本里的嵌套循环逐行导出逻辑,所有结果先在内存中收集完成后一次性写入文件,代码更短,执行效率更高,也避免了频繁IO导致的文件占用问题

执行效果

运行后生成的Output.csv和期望结构完全一致:

typesetupresponsibleteam
ymaster finsusansa1
ysensei kunopetersr2
ysensei jonpetersr2
yjuniorjumost6

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 16:42:52