使用PowerShell处理CSV数据:去重Appid并保留对应不同Id
PowerShell实现重复Appid去重并收集对应Id的方案
没问题,这就帮你搞定这个需求!下面是具体的实现步骤和代码,完全贴合你的CSV数据场景:
1. 读取CSV数据
首先我们需要把你的CSV数据读入PowerShell,注意你的数据是空格分隔的,所以要指定分隔符:
# 如果是直接用你提供的文本数据 $csvData = @" Id Appid 12i5r6 123 4524hu 123 r664hf 963 gjh6hg 963 "@ | ConvertFrom-Csv -Delimiter " " # 如果你的数据是本地CSV文件,替换成下面这行 # $csvData = Import-Csv -Path "C:\your-path\data.csv" -Delimiter " "
2. 分组处理并存储变量
接下来我们用Group-Object按Appid分组,然后分别完成两个目标:
- 每个
Appid只保留一个实例 - 把同一个
Appid对应的所有Id收集到变量中
# 创建哈希表,用来存储【Appid => 对应所有Id的数组】 $appIdToIdsMap = @{} # 创建数组,存储去重后的Appid实例(每个Appid留一条) $uniqueAppEntries = @() # 遍历每个Appid分组 foreach ($appGroup in $csvData | Group-Object -Property Appid) { # 收集当前分组下的所有Id $allRelatedIds = $appGroup.Group.Id # 存入哈希表 $appIdToIdsMap[$appGroup.Name] = $allRelatedIds # 保留该Appid的第一个实例(你也可以改成取最后一个,按需调整) $uniqueAppEntries += $appGroup.Group[0] }
3. 验证结果
现在你可以直接使用这两个变量:
- 查看每个Appid对应的所有Id:
$appIdToIdsMap
输出会是类似这样:
Name Value ---- ----- 123 {12i5r6, 4524hu} 963 {r664hf, gjh6hg}
- 查看去重后的Appid实例:
$uniqueAppEntries
输出会是:
Id Appid -- ----- 12i5r6 123 r664hf 963
这个方案灵活又直观,完全满足你的需求~
内容的提问来源于stack exchange,提问作者pro99
相关产品推荐
相关产品推荐

