2012-01-27 10 views
7

chcę obliczyć:raporty wynik analizowania i sumy punktów ekstrakt i średnie

  • suma punktów (suma)
  • punkty dzisiaj (suma)
  • suma punktów (średnia)
  • punkty dzisiaj (średnia)

nie mam pojęcia z bash scripting inne niż muszę zacząć: #!/bin/bash

oto próbka mojego pliku

#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

Dla ludzi, aby pomóc - trzeba starać się –

+0

chcesz to zrobić w skryptach bash? – Tim

+0

Dlaczego więc nie czytasz najpierw przewodnika programowania bash, a następnie pytasz o pytania, na które już nie ma odpowiedzi w przewodniku? Po co marnować czas ludzi? Jeśli chcesz, żeby ktoś inny zrobił to za ciebie - zatrudnij programistę, który to zrobi. –

Odpowiedz

7

Można to wykorzystać:

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

Następnie należy zapisać do pliku, takich jak: script.sh

zmienić uprawnienia do pliku wykonywalnego: chmod +x script.sh

Następnie uruchom: ./script.sh sample.txt

Wyjście to będzie:

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

Uwaga: $1 będzie plik wejściowy.

Oto więcej pomocy o bc command, grep, awk