parsing分数报告并提取分数和平均值

我想计算:

  • 总分(总和)
  • 今天的分数(总和)
  • 总分(平均)
  • 今天(平均)

我不知道与bash脚本以外,我需要开始:#!/ bin / bash

这里是我的文件的示例

#file 14516 - 2011-01-26 19:01:00 EDT# user: xxxxxxxx@email.com / id(11451611) lastlogin: 1295896515 total_points: 11.76 / today: 5.21 gameid: 51 user: xxxxxxxx@email.com / id(11837327) lastlogin: 1293893041 total_points: 416.1 / today: 98.1 gameid: 49 user: xxxxxxxx@email.com / id(11451611) lastlogin: 1294917135 total_points: 1.76 / today: 0.21 gameid: 51 

你可以使用这个:

 #!/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命令的帮助, grep , awk