Powershell 将项目分组,因为它们与其他列上的另一个值相关,所以用逗号分隔

Powershell to group items separated by commas as they relate to another value on other column

需要一些关于 powershell 和操作 csv 文件的帮助,因为我是一个正在学习的新手。

我有一个包含多个列的 .csv 文件,现在让我们将它们称为 A、B、C、D 在 'A' 列中,我有 URL 列,在 'B' 列中,我有组,C 和 D 对于此示例很重要。

至于每列下方单元格中的值,显然 URL 的值与组列 'B'.

下的值相关联

示例 csv:

URL,Groups,x,y
test1.org,TestGroup,xxx,yyy
test2.org,TestGroup,xxx,yyy
Test3.com,TestGroup,xxx,yyy
Check.com,CheckGroup,xxx,yyy
Random.1.com,RandomGroup,xxx,yyy
random.22.org,RandomGroup,xxx,yyy

所以我想做的是以如下方式对这些进行分组:

Groups,URL,x,y
TestGroup,"test1.org,test2.org,test3.org",xxx,yyy
CheckGroup,Check.com,xxx,yyy
RandomGroup,"Random.1.com,random.22.org",xxx,yyy

我尝试了以下方法:

$Dir = "FileLocation\Data"
$Data1 = import-csv $Dir\my.csv

$Data = $Data1 | Select Groups, URL | Group-Object Groups 

$Data | export-cdv $Dir\result.csv

这导致 table 对我不起作用,因为它将分组转换为数组。

我希望能够在原始 csv 上按组进行唯一排序,并导入组的 URL 的值,因为它们在同一个单元格中相关,用逗号分隔。

感谢您的帮助。

看起来是哈希表魔术的好案例,创建一个哈希表并附加到它,使用组列作为键。

$data = import-csv 'path'
$hashtable = @{}
foreach ($item in $data) { $hashtable[$($item.Groups)] += "$($item.URL), " }

唯一的缺点是每个键的末尾多了一个逗号。