You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让PowerShell的Measure-Object输出完整数值统计结果?

问题

我有一个格式为[0-9]+ [a-zA-z ,]+的文件,内容类似uniq -c生成的出现次数统计结果,每行开头是数字。尝试用PowerShell的Measure-Object获取这些数字的标准差,但仅得到Count值,其余统计项(均值、总和、极值、标准差)均为空。

执行的命令及输出如下:

gc ./uniq.txt |  %{$_.split(" ")[0]} | select -First 10
1333235
597499
168347
71893
50226
37268
31637
27127
26045
15540

gc ./uniq.txt | %{$_.split(" ")[0]} | Measure-Object   
Count             : 895
Average           : 
Sum               : 
Maximum           : 
Minimum           : 
StandardDeviation : 
Property          : 
解决方法

问题核心是你提取的数字为字符串类型,Measure-Object对字符串仅统计条目数量(Count),不会执行数值类统计。只需将提取的字符串转换为数值类型即可解决:

方法1:直接转换为数值后统计

使用[long](避免大数字溢出)将拆分出的字符串转为数值,再传入Measure-Object:

Get-Content ./uniq.txt | ForEach-Object { [long]$_.Split(" ", 2)[0] } | Measure-Object -Average -Sum -Maximum -Minimum -StandardDeviation
  • Split(" ", 2):限制仅拆分一次,避免内容中的空格干扰数字提取
  • [long]:转换为64位整数,适配较大的统计数值
  • 显式指定-Average等参数可确保输出所有需要的统计项(即使不指定,输入为数值时Measure-Object也会自动计算这些字段)

方法2:通过对象属性统计

也可以先将数字封装为对象属性,再针对该属性做数值统计:

Get-Content ./uniq.txt | Select-Object @{Name='Count'; Expression={[long]$_.Split(" ",2)[0]}} | Measure-Object -Property Count -Average -Sum -Maximum -Minimum -StandardDeviation

这种方式结果格式与方法1一致,适合需要保留原始数据结构的场景。

执行上述命令后,就能得到完整的统计结果,包括均值、总和、极值和标准差。

内容的提问来源于stack exchange,提问作者Christian Bongiorno

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 03:10:06