2012-01-27 53 views
7

我想計算:解析成績單和提取點的總和和平均

  • 的總積分(總和)
  • 今日點(和)
  • 的總積分(平均)
  • 今日點(平均)

我有使用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

對於人來幫助你 - 你需要讓自己 – 2012-01-27 01:46:25

+0

你想使用Bash腳本完成這件事的努力? – Tim 2012-01-27 01:47:14

+0

那麼,爲什麼你不先閱讀bash編程指南,然後問一些本指南中沒有回答的問題?爲什麼浪費人們的時間?如果你想讓其他人爲你做 - 請一位程序員來做。 – 2012-01-27 01:59:58

回答

7

您可以使用此:

#!/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

更改權限可執行文件:chmod +x script.sh

然後運行它:./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