2012-01-27 11 views
7

i desea calcular:informes de resultados Analizar y sumas de puntos de extracto y los promedios

  • el total de puntos (suma)
  • los puntos actuales (suma)
  • el total de puntos (promedio)
  • los puntos actuales (promedio)

no tengo ni idea de scripting de bash que no sea lo que necesito para empezar: #!/bin/bash

aquí es una muestra de mi archivo

#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

Para las personas que le ayudan a - es necesario hacer un esfuerzo mismo –

+0

desea que este hecho en secuencias de comandos Bash? – Tim

+0

Entonces, ¿por qué no lees primero una guía de programación bash y luego haces preguntas que ya no están respondidas en la guía? ¿Por qué perder el tiempo de la gente? Si quieres que alguien más lo haga por ti, contrata a un programador para que lo haga. –

Respuesta

7

Se puede utilizar esta:

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

continuación, guardar en un archivo como: script.sh

cambiar el permiso a ejecutable: chmod +x script.sh

Luego ejecútelo: ./script.sh sample.txt

Esta es la salida:

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

Nota: $1 será el archivo de la entrada.

Aquí hay más ayuda sobre la bc command, grep, awk

Cuestiones relacionadas