从命令行获取一组数字的平均值的最快方法是啥?
Posted
技术标签:
【中文标题】从命令行获取一组数字的平均值的最快方法是啥?【英文标题】:What's the quickest way to get the mean of a set of numbers from the command line?从命令行获取一组数字的平均值的最快方法是什么? 【发布时间】:2010-09-17 21:07:39 【问题描述】:使用您希望在 nix 系统上找到的任何工具(事实上,如果您愿意,msdos 也可以),假设您计算一组数字的平均值的最简单/最快的方法是什么在流或文件中每行一个吗?
【问题讨论】:
【参考方案1】:awk ' n += $1 ; END print n / NR '
这会在 n
中累加总和,然后除以项目数(NR
= 记录数)。
适用于整数或实数。
【讨论】:
NR 技巧不错,但不确定要接受哪个 awk 答案,所以我选择了票数最高的答案!【参考方案2】:Awk
awk 'total += $1; count++ END print total/count'
【讨论】:
【参考方案3】:在 UNIX 上使用 Num-Utils:
average 1 2 3 4 5 6 7 8 9
【讨论】:
有趣。我在 Ubuntu 上安装了这个,我必须在标准输入上指定数字,而不是作为参数。【参考方案4】:perl -e 'while (<>) $sum += $_; $count++ print $sum / $count, "\n"';
【讨论】:
【参考方案5】:使用“st”(https://github.com/nferraz/st):
$ st numbers.txt
N min max sum mean sd
10.00 1.00 10.00 55.00 5.50 3.03
指定一个选项以查看个人统计数据:
$ st numbers.txt --mean
5.5
(免责声明:我写了这个工具:))
【讨论】:
【参考方案6】:在 Powershell 中,它会是
get-content .\meanNumbers.txt | measure-object -average
当然,这是冗长的语法。如果您使用别名输入,
gc .\meanNumbers.txt | measure-object -a
【讨论】:
【参考方案7】:Perl。
@a = <STDIN>;
for($i = 0; $i < #@a; $i++)
$sum += $a[i];
print $a[i]/#@a;
Caveat Emptor:我的语法可能有点奇怪。
【讨论】:
【参考方案8】:红宝石一班
cat numbers.txt | ruby -ne 'BEGIN$sum=0; $sum=$sum+$_.to_f; ENDputs $sum/$.'
source
【讨论】:
以上是关于从命令行获取一组数字的平均值的最快方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章