首页 > 解决方案 > 从 Powershell 中的 CSV 文件获取唯一列和计数

问题描述

我有一个名为 Products.csv 的 CSV 文件

Product_ID,Category
1,A
2,A
3,A
4,B

我想要一个 powershell 脚本,它将向我显示唯一类别以及计数并导出到 CSV。

IE

A,3
B,1

我已使用以下代码提取唯一类别,但无法获取计数:

Import-Csv Products.csv -DeLimiter ","|
Select 'Category' -Unique |
Export-Csv Summary.csv -DeLimiter "," -NoTypeInformation

谁能帮我吗?谢谢。

标签: powershell

解决方案


您可以使用Group-Object来获取计数。

Import-Csv Products.csv -DeLimiter "," |
    Group-Object Category | Foreach-Object {
        "{0},{1}" -f $_.Name,$_.Count 
    }

如果您想要计数的 CSV 输出,您需要数据的标题。Group-Object输出属性Name,它是分组的属性值,Count它是该组中的项目数。

Import-Csv Products.csv -DeLimiter "," |
    Group-Object Category | Select-Object Name,Count |
        Export-Csv Summary.csv -Delimiter ',' -NoType

您可以进一步使用上述代码并使用Select-Object的计算属性。然后,您可以使用表达式创建自定义命名列和/或值。

Import-Csv Products.csv -DeLimiter "," |
    Group-Object Category |
        Select-Object @{n='Product_ID';e={$_.Name}},Count |
            Export-Csv Summary.csv -Delimiter ',' -NoType

推荐阅读