2012-01-27 31 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