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

时间:2017-03-01 18:18:54

标签: powershell powershell-v4.0

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

我有一个包含多个列的.csv文件,现在让我们将它们称为A,B,C,D 在专栏' A'我有网址,列' B'我有群组,C和D对于这个例子非常重要。

就每列下方单元格中的值而言,显然URL的值与Group Group' 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

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

我希望能够在原始csv上按组对其进行排序,并在由逗号分隔的同一单元格中导入Group的URL值。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

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

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

唯一的缺点是每个键的末尾都有一个额外的逗号。