假设CSV文件:
Name,group_name,group_id
foo,Best,1
bar,Worst,2
baz,Best,1
bob,Worst,2
Powershell分组的最简单形式是什么?我可以使用它来获得以下输出:
Count group_id group_name Names
----- -------- ---------- -----
2 1 Best ["foo", "baz"]
2 2 Worst ["bar", "bob"]
使用Group-Object
cmdlet按名称和id将行分组,然后使用Select-Object
从每个组中提取相应的详细信息作为单独的属性:
# replace with `$Data = Import-Csv pathtofile.csv`
$Data = @'
Name,group_name,group_id
foo,Best,1
bar,Worst,2
baz,Best,1
bob,Worst,2
'@|ConvertFrom-Csv
# Group rows, then construct output record with `Select-Object`
$Data |Group-Object group_name,group_id |Select-Object Count,@{Name='group_id';Expression={$_.Group[0].group_id}},@{Name='group_name';Expression={$_.Group[0].group_name}},@{Name='Names';Expression={$_.Group.Name}}