以下是获得答案的previous question的连续性。
原始CSV具有以下值:
URL,Groups,contact,number test1.org,TestGroup,Ax;Bx;Cx,555 test2.org,TestGroup,Ax;Bx;Cx,555 Test3.com,TestGroup,Ax;Bx;Cx,555 Check.com,CheckGroup,Rx;Tx,333 Random.1.com,RandomGroup,Gy;Fy;Hy,999 random.22.org,RandomGroup,Gy;Fy;Hy,999
有人慷慨地帮助提供代码来生成哈希表,该哈希表按Groups
对其进行分组,并将每个组的所有网址设置为以逗号分隔的一个(,
)。
代码是:
$data = Import-Csv 'path'
$hashtable = @{}
foreach ($item in $data) {
$hashtable[$($item.Groups)] += "$($item.URL); "
}
我需要回答两件事:
;
)?我认为逻辑是Sort -Unique
原始的,并且对于与哈希表匹配的每个组名称,在URL字段中插入哈希表的值。这样的事情。
预期的最终结果应该是(有序的):
Groups,URL,contact,number TestGroup,test1.org;test2.org;Test3.com,Ax;Bx;Cx,555 CheckGroup,Check.com,Rx;Tx,333 RandomGroup,Random.1.com;random.22.org,Gy;Fy;Hy,999
答案 0 :(得分:1)
$data
字段组Groups
,然后展开每个组的URL
字段,并用分号连接结果数组:
$data | Group-Object Groups | ForEach-Object {
$hashtable[$_.Name] = @($_.Group | Select-Object -Expand URL) -join ';'
}
然后从原始数据中删除URL字段,选择唯一记录,然后重新添加分组的URL:
$data | Select-Object -Property * -Exclude URL |
Select-Object -Unique * |
Select-Object *,@{n='URL';e={$hashtable[$_.Groups]}}