2012-01-27 6 views
7

voglio calcolare:rapporti punteggio Parse e somme punto estratto e le medie

  • i punti totali (somma)
  • i punti di oggi (somma)
  • i punti totali (media)
  • i punti di oggi (media)

non ho idea di bash scripting diverso ho bisogno di iniziare con: #!/bin/bash

012.351.641.061.

Ecco un esempio del mio file

#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

Per le persone per aiutarti - è necessario fare uno sforzo da soli –

+0

si desidera che questo fatto in scripting Bash? – Tim

+0

Quindi perché non leggi prima una guida alla programmazione di bash, quindi fai domande che non sono già state fornite nella guida? Perché sprecare il tempo delle persone? Se vuoi che qualcun altro lo faccia per te, assumi un programmatore per farlo. –

risposta

7

È possibile utilizzare questo:

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

quindi salvare in un file del tipo: script.sh

Modificare il permesso di eseguibile: chmod +x script.sh

Quindi eseguilo: ./script.sh sample.txt

Questo stamperà:

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

Nota: $1 sarà il file di input.

Ecco ulteriori informazioni circa la bc command, grep, awk

Problemi correlati