2012-01-27 10 views
7

私は計算したい:解析のスコアレポートとエキスポイント合計値や平均値

  • 合計ポイント(合計)
  • 本日ポイント(合計)
  • 合計ポイント(平均)
  • 今日のポイント(平均)

私はで開始する必要がある以外はbashスクリプトとは考えていません:#!を/ binに/ bashの

ここにあなたがこの使用することができます私のファイルのサンプル

#file 14516 - 2011-01-26 19:01:00 EDT# 
user: [email protected]/id(11451611) 
lastlogin: 1295896515 
total_points: 11.76/today: 5.21 
gameid: 51 

user: [email protected]/id(11837327) 
lastlogin: 1293893041 
total_points: 416.1/today: 98.1 
gameid: 49 

user: [email protected]/id(11451611) 
lastlogin: 1294917135 
total_points: 1.76/today: 0.21 
gameid: 51 
+0

についての詳細なヘルプです - あなたは努力をする必要が自分自身は –

+0

あなたは、これはbashのスクリプトで実行したいですか? – Tim

+0

まず、bashプログラミングガイドを読んでから、ガイドでまだ答えられていない質問をしてみませんか?なぜ人々の時間を無駄にしていますか?他の誰かがあなたのためにそれをやりたければ、それを行うプログラマーを雇う。 –

答えて

7

です:script.sh

変更実行可能ファイルへのアクセス権:chmod +x script.sh

のようなファイルに保存し

#!/bin/bash 

if [ ! -f $1 ]; then 
    echo "File $1 not found" 
    exit 1 
fi 

number=$(grep total_points $1 | wc -l) 
sumTotal=$(grep total_points $1 | awk '{sum+=$2} END { print sum }') 
sumToday=$(grep total_points $1 | awk '{sum+=$5} END { print sum }') 

echo "Total SUM: $sumTotal" 
echo -n "Total AVG: " 
echo "scale=5;$sumTotal/$number" | bc 

echo "Today SUM: $sumToday" 
echo -n "Today AVG: " 
echo "scale=5;$sumToday/$number" | bc 

は、

それからそれを実行してください:./script.sh sample.txt

この意志出力:

Total Record: 3 
Total SUM: 429.62 
Total AVG: 143.20666 
Today SUM: 103.52 
Today AVG: 34.50666 

注: $1入力ファイルになります。

はここであなたを助けるために人々のためにbc commandgrepawk