将新生成的散列 table 添加到列值匹配的现有 csv
Add newly generated hash table to existing csv where value of a column match
以下是已回答的 的续集。
原始 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
有人慷慨地帮助提供代码来生成一个散列table,该散列按 Groups
分组,并将每组的所有 URL 设置为一个,用逗号分隔 (,
).
代码为:
$data = Import-Csv 'path'
$hashtable = @{}
foreach ($item in $data) {
$hashtable[$($item.Groups)] += "$($item.URL); "
}
我需要回答两件事:
- 如何删除组中最后一个值的分号 (
;
)?
- 如何将这个新散列table恢复为我的原始 CSV?
我认为的逻辑是 Sort -Unique
原始逻辑,并且对于每个与散列 table 相匹配的组名,将散列 table 的值插入 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
按 Groups
字段对 $data
进行分组,然后展开每个组的 URL
字段并用分号加入结果数组:
$data | Group-Object Groups | ForEach-Object {
$hashtable[$_.Name] = @($_.Group | Select-Object -Expand URL) -join ';'
}
然后从原始数据中删除 URL 字段,select 唯一记录,并将分组的 URL 添加回:
$data | Select-Object -Property * -Exclude URL |
Select-Object -Unique * |
Select-Object *,@{n='URL';e={$hashtable[$_.Groups]}}
以下是已回答的
原始 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
有人慷慨地帮助提供代码来生成一个散列table,该散列按 Groups
分组,并将每组的所有 URL 设置为一个,用逗号分隔 (,
).
代码为:
$data = Import-Csv 'path'
$hashtable = @{}
foreach ($item in $data) {
$hashtable[$($item.Groups)] += "$($item.URL); "
}
我需要回答两件事:
- 如何删除组中最后一个值的分号 (
;
)? - 如何将这个新散列table恢复为我的原始 CSV?
我认为的逻辑是 Sort -Unique
原始逻辑,并且对于每个与散列 table 相匹配的组名,将散列 table 的值插入 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
按 Groups
字段对 $data
进行分组,然后展开每个组的 URL
字段并用分号加入结果数组:
$data | Group-Object Groups | ForEach-Object {
$hashtable[$_.Name] = @($_.Group | Select-Object -Expand URL) -join ';'
}
然后从原始数据中删除 URL 字段,select 唯一记录,并将分组的 URL 添加回:
$data | Select-Object -Property * -Exclude URL |
Select-Object -Unique * |
Select-Object *,@{n='URL';e={$hashtable[$_.Groups]}}