PowerShell实现两个CSV文件deviceName匹配并提取对应id
用PowerShell匹配两个CSV文件的deviceName并输出对应ID
核心思路
先把包含deviceName和id的第二个CSV转换成哈希表(键为deviceName,值为id),这样查找匹配项的效率会很高,尤其是处理大文件时。接着遍历第一个CSV的deviceName,在哈希表里查找对应的id并输出结果。
代码示例
# 替换成你的两个CSV文件实际路径 $firstCsvPath = "你的路径\第一个文件.csv" $secondCsvPath = "你的路径\第二个文件.csv" # 读取CSV文件为PowerShell对象 $targetDevices = Import-Csv -Path $firstCsvPath $deviceIdSource = Import-Csv -Path $secondCsvPath # 构建deviceName到id的映射哈希表 $deviceIdMap = @{} foreach ($item in $deviceIdSource) { $deviceIdMap[$item.deviceName] = $item.id } # 遍历目标设备,匹配并输出结果 foreach ($device in $targetDevices) { $deviceName = $device.deviceName if ($deviceIdMap.ContainsKey($deviceName)) { # 输出匹配到的设备名和ID [PSCustomObject]@{ deviceName = $deviceName id = $deviceIdMap[$deviceName] } } else { # 可选:输出未找到匹配的设备(不需要的话可以删掉这段) [PSCustomObject]@{ deviceName = $deviceName id = "无匹配ID" } } }
额外说明
- 如果需要把结果导出到新的CSV文件,在代码最后加上:
| Export-Csv -Path "匹配结果.csv" -NoTypeInformation - 哈希表的优势是查找速度快,当第二个CSV文件条目很多时,比逐行比对的效率高得多。
内容的提问来源于stack exchange,提问作者Radhe Sham
相关产品推荐
相关产品推荐

