- ベストアンサー
平均値の算出
以下のようなタブ区切りファイルで、 aaa xxxx 10 bbb yyyy 20 ccc zzzz 30 3つ目のカラムの平均値を算出するUNIXコマンドORシェルってできるのでしょうか? (10+20+30)/3 = 20 アウトプットとしては、平均値の"20"と行数の"3"が欲しいです。 よろしくおねがいします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
awkだと、 awk '{sum+=$3}END{print "LINE=" NR;print "AVE=" sum/NR}' inputfile
その他の回答 (1)
- you-m
- ベストアンサー率58% (190/327)
回答No.1
とりあえず、純粋にBシェルスクリプトで書きました。 OSは選ばないと思います。 awkスクリプトならば、もう少しきれいな処理になるかもしれません。 インデントは消えてしまうので、適当に整形してください。 ---------------------------- #!/bin/sh DATAFILE=$1 LINE_COUNT=0 SUM_DATA=0 while read LINE do LINE_COUNT=`expr ${LINE_COUNT} + 1` DATA=`echo ${LINE} | cut -d' ' -f3` SUM_DATA=`expr ${SUM_DATA} + ${DATA}` unset DATA done < ${DATAFILE} echo "件数="${LINE_COUNT} echo "平均="`expr ${SUM_DATA} / ${LINE_COUNT}`
質問者
お礼
回答、ありがとうございました。 大変参考になりました。
お礼
回答、ありがとうございました。 おかげさまで、希望の処理が実現できました。