ファイルdata.txt
には次のものが含まれます。
1.00 1.23 54.4 213.2 3.4
スクリプトの出力は次のようになります。
ave: 54.646
いくつかの単純なスクリプトが推奨されます。
1 つの方法を次に示します。
$ awk '{s+=$1}END{print "ave:",s/NR}' RS=" " file
ave: 54.646
別のオプションは、次を使用することjq
です。
$ seq 100|jq -s add/length
50.5
-s
( --slurp
) は、各行を JSON (この場合は数値) として解析した後、入力行の配列を作成します。
またはOPの場合:
tr \ \\n<file|jq -s add/length|sed s/^/ave:\ /
perl -lane '$a+=$_ for(@F);print "ave: ".$a/scalar(@F)' file
複数の行があり、単一の平均が必要な場合:
perl -lane '$a+=$_ for(@F);$f+=scalar(@F);END{print "ave: ".$a/$f}' file