コマンドラインから一連の数値の平均を取得する最も簡単な方法は何ですか?

StackOverflow https://stackoverflow.com/questions/214363

質問

nixシステムで見つかると予想されるツールを使用して(実際、必要に応じてmsdosも問題ありません)、数値セットの平均を計算する最も簡単/最速の方法は何ですか?ストリームまたはファイルの行ごとに1つ持っていますか?

役に立ちましたか?

解決

Awk

awk '{total += $1; count++ } END {print total/count}'

他のヒント

awk ' { n += $1 }; END { print n / NR }'

これは合計を n に累積し、アイテムの数で除算します( NR =レコードの数)。

整数または実数で動作します。

Num-Utils をUNIXで使用する場合:

average 1 2 3 4 5 6 7 8 9
perl -e 'while (<>) { $sum += <*>; $count++ } print $sum / $count, "\n"';

Powershellでは、

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

もちろん、これは冗長な構文です。エイリアスを使用して入力した場合、

gc .\meanNumbers.txt | measure-object -a

&quot; st&quot;の使用( 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

(免責事項:このツールを作成しました:))

Perl。

@a = <STDIN>;

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

print $a[i]/#@a;

警告Emptor:私の構文は少し気味が悪いかもしれません。

ルビーワンライナー

cat numbers.txt | ruby -ne 'BEGIN{$sum=0}; $sum=$sum+

ルビーワンライナー

<*>

ソース

.to_f; END{puts $sum/$.}'

ソース

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top