代码之家  ›  专栏  ›  技术社区  ›  Rook

从命令行中获取一组数字的平均值的最快方法是什么?

  •  12
  • Rook  · 技术社区  · 16 年前

    使用您希望在NIX系统上找到的任何工具(事实上,如果您愿意,MSDOS也可以),假设流或文件中每行有一个数,那么计算一组数的平均值的最简单/最快的方法是什么?

    8 回复  |  直到 7 年前
        1
  •  11
  •   Andru Luvisi    16 年前

    AWK

    awk '{total += $1; count++ } END {print total/count}'
    
        2
  •  16
  •   Adam Liss    16 年前
    awk ' { n += $1 }; END { print n / NR }'
    

    这会使总数 n ,然后除以项目数( NR =记录数)。

    适用于整数或实数。

        3
  •  5
  •   Mitch Wheat    16 年前

    使用 Num-Utils 对于UNIX:

    average 1 2 3 4 5 6 7 8 9
    
        4
  •  3
  •   Robert Gamble    16 年前
    perl -e 'while (<>) { $sum += $_; $count++ } print $sum / $count, "\n"';
    
        5
  •  1
  •   Knox    16 年前

    在PowerShell中,

    get-content .\meanNumbers.txt | measure-object -average
    

    当然,这是冗长的语法。如果使用别名键入,

    gc .\meanNumbers.txt | measure-object -a
    
        6
  •  1
  •   user2747481    11 年前

    使用“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
    

    (免责声明:我编写了此工具:)

        7
  •  0
  •   Paul Nathan    16 年前

    Perl

    @a = <STDIN>;
    
    for($i = 0; $i < #@a; $i++)
    {
       $sum += $a[i];
    }
    
    print $a[i]/#@a;
    

    注意:我的语法可能有点轻率。

        8
  •  0
  •   american-ninja-warrior    7 年前

    红宝石一号衬里

    cat numbers.txt | ruby -ne 'BEGIN{$sum=0}; $sum=$sum+$_.to_f; END{puts $sum/$.}'
    

    source