プロが教える店舗&オフィスのセキュリティ対策術

以下のようなタブ区切りファイルで、
aaaxxxx10
bbbyyyy20
ccczzzz30

3つ目のカラムの平均値を算出するUNIXコマンドORシェルってできるのでしょうか?
(10+20+30)/3 = 20
アウトプットとしては、平均値の"20"と行数の"3"が欲しいです。
よろしくおねがいします。

A 回答 (2件)

awkだと、



awk '{sum+=$3}END{print "LINE=" NR;print "AVE=" sum/NR}' inputfile
    • good
    • 0
この回答へのお礼

回答、ありがとうございました。
おかげさまで、希望の処理が実現できました。

お礼日時:2005/06/10 09:54

とりあえず、純粋に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}`
    • good
    • 0
この回答へのお礼

回答、ありがとうございました。
大変参考になりました。

お礼日時:2005/06/10 09:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!