file:~/bin/q3stat ---------- grep -irA13 ": $1" ~/.q3a/osp/stats/ | awk '{if ($1 ~ /Damage/ && $2 ~ /Given/ && $3>6000) { split($1,stats,/\//); split(stats[8],file,/\-/); print stats[7] "/" file[1]}} ' | xargs -i% grep -hiA13 ": $1" ~/.q3a/osp/stats/% | awk -f ~/bin/_q3stat.awk -v name=$1 grep -hirA25 "MATCH COMPLETE" ~/.q3a/osp/stats/ | awk -f ~/bin/_q3stat2.awk -v name=$1 ---------- EOF file:~/bin/_q3stat.awk ---------- BEGIN { games = 0 gaunt_k = 0 gaunt_d = 0 gannt_maxk = 0 gaunt_maxd = 0 mg_h = 0 mg_a = 0 mg_k = 0 mg_d = 0 mg_maxk = 0 mg_maxd = 0 mg_maxacc = 0 sg_h = 0 sg_a = 0 sg_k = 0 sg_d = 0 sg_maxk = 0 sg_maxd = 0 sg_maxacc = 0 gl_h = 0 gl_a = 0 gl_k = 0 gl_d = 0 gl_maxk = 0 gl_maxd = 0 gl_maxacc = 0 rl_h = 0 rl_a = 0 rl_k = 0 rl_d = 0 rl_maxk = 0 rl_maxd = 0 rl_maxacc = 0 lg_h = 0 lg_a = 0 lg_k = 0 lg_d = 0 lg_maxk = 0 lg_maxd = 0 lg_maxacc = 0 rg_h = 0 rg_a = 0 rg_k = 0 rg_d = 0 rg_maxk = 0 rg_maxd = 0 rg_maxacc = 0 }; { if ($1 ~ /Gauntlet/) { gaunt_k += $3 gaunt_d += $4 if ($3 > gaunt_maxk) { gaunt_maxk = $3 } if ($4 > gaunt_maxd) { gaunt_maxd = $4 } } if ($1 ~ /MachineGun/) { games++ if ($3 + 0 > mg_maxacc) { mg_maxacc = $3 + 0 } split ($4,acc,/\//) mg_h += acc[1] +0 mg_a += acc[2] +0 mg_k += $5 mg_d += $6 if ($5 > mg_maxk) { mg_maxk = $5 } if ($6 > mg_maxd) { mg_maxd = $6 } } if ($1 ~ /Shotgun/) { if ($3 + 0 > sg_maxacc) { sg_maxacc = $3 + 0 } split ($4,acc,/\//) sg_h += acc[1] +0 sg_a += acc[2] +0 sg_k += $5 sg_d += $6 if ($5 > sg_maxk) { sg_maxk = $5 } if ($6 > sg_maxd) { sg_maxd = $6 } } if ($1 ~ /G\.Launcher/) { if ($3 + 0 > gl_maxacc) { gl_maxacc = $3 + 0 } split ($4,acc,/\//) gl_h += acc[1] +0 gl_a += acc[2] +0 gl_k += $5 gl_d += $6 if ($5 > gl_maxk) { gl_maxk = $5 } if ($6 > gl_maxd) { gl_maxd = $6 } } if ($1 ~ /R\.Launcher/) { if ($3 + 0 > rl_maxacc) { rl_maxacc = $3 + 0 } split ($4,acc,/\//) rl_h += acc[1] +0 rl_a += acc[2] +0 rl_k += $5 rl_d += $6 if ($5 > rl_maxk) { rl_maxk = $5 } if ($6 > rl_maxd) { rl_maxd = $6 } } if ($1 ~ /LightningGun/) { if ($2 + 0 > lg_maxacc) { lg_maxacc = $2 + 0 } split ($3,acc,/\//) lg_h += acc[1] +0 lg_a += acc[2] +0 lg_k += $4 lg_d += $5 if ($4 > lg_maxk) { lg_maxk = $4 } if ($5 > lg_maxd) { lg_maxd = $5 } } if ($1 ~ /Railgun/) { if ($3 + 0 > rg_maxacc) { rg_maxacc = $3 + 0 } split ($4,acc,/\//) rg_h += acc[1] +0 rg_a += acc[2] +0 rg_k += $5 rg_d += $6 if ($5 > rg_maxk) { rg_maxk = $5 } if ($6 > rg_maxd) { rg_maxd = $6 } } if ($1 ~ /Plasmagun/) { if ($3 + 0 > pg_maxacc) { pg_maxacc = $3 + 0 } split ($4,acc,/\//) pg_h += acc[1] +0 pg_a += acc[2] +0 pg_k += $5 pg_d += $6 if ($5 > pg_maxk) { pg_maxk = $5 } if ($6 > pg_maxd) { pg_maxd = $6 } } }; END { total_k = gaunt_k+mg_k+sg_k+gl_k+rl_k+lg_k+rg_k+pg_k total_d = gaunt_d+mg_d+sg_d+gl_d+rl_d+lg_d+rg_d+pg_d total_dmg = ((7*mg_h)+(10*sg_h)+(100*gl_h)+(100*rl_h)+(8*lg_h)+(100*rg_h)+(20*pg_h))/1000 avg_acc = (mg_h+sg_h+gl_h+rl_h+lg_h+rg_h+pg_h) / (mg_a+sg_a+gl_a+rl_a+lg_a+rg_a+pg_a)*100 avg_eff = (gaunt_k+mg_k+sg_k+gl_k+rl_k+lg_k+rg_k+pg_k) / (gaunt_d+mg_d+sg_d+gl_d+rl_d+lg_d+rg_d+pg_d)*100 avg_maxacc = (mg_maxacc+sg_maxacc+_maxacc+gl_maxacc+rl_maxacc+lg_maxacc+rg_maxacc+pg_maxacc)/7 printf "Accuracy info for %s (%s games):\n\ Weapon Accrcy Hits/Atts Kills Deaths Efficency Max_Accrcy Damage\n\ --------------------------------------------------------------------------------------\n\ Gauntlet : %4d (%03d) %3d (%03d) %5.1f%% \n\ MachineGun : %.1f%% %5d/%5d %4d (%03d) %3d (%03d) %5.1f%% %3.1f%% %5.1fk\n\ Shotgun : %.1f%% %5d/%5d %4d (%03d) %3d (%03d) %5.1f%% %3.1f%% %5.1fk\n\ G.Launcher : %.1f%% %5d/%5d %4d (%03d) %3d (%03d) %5.1f%% %3.1f%% %5.1fk\n\ R.Launcher : %.1f%% %5d/%5d %4d (%03d) %3d (%03d) %5.1f%% %3.1f%% %5.1fk\n\ LightningGun: %.1f%% %5d/%5d %4d (%03d) %3d (%03d) %5.1f%% %3.1f%% %5.1fk\n\ Railgun : %.1f%% %5d/%5d %4d (%03d) %3d (%03d) %5.1f%% %3.1f%% %5.1fk\n\ Plasmagun : %.1f%% %5d/%5d %4d (%03d) %3d (%03d) %5.1f%% %3.1f%% %5.1fk\n\ --------------------------------------------------------------------------------------\n\ Totals : %4d %4d %5.1fk\n\ Averages : %3.1f%% %4d %4d %4.1f%% %3.1f%% %4.1fk\n", name, games, gaunt_k, gaunt_maxk, gaunt_d, gaunt_maxd, gaunt_k/gaunt_d*100, mg_h/mg_a*100, mg_h, mg_a, mg_k, mg_maxk, mg_d, mg_maxd, mg_k/mg_d*100, mg_maxacc, 7*mg_h/1000, sg_h/sg_a*100, sg_h, sg_a, sg_k, sg_maxk, sg_d, sg_maxd, sg_k/sg_d*100, sg_maxacc, 10*sg_h/1000, gl_h/gl_a*100, gl_h, gl_a, gl_k, gl_maxk, gl_d, gl_maxd, gl_k/gl_d*100, gl_maxacc, 100*gl_h/1000, rl_h/rl_a*100, rl_h, rl_a, rl_k, rl_maxk, rl_d, rl_maxd, rl_k/rl_d*100, rl_maxacc, 100*rl_h/1000, lg_h/lg_a*100, lg_h, lg_a, lg_k, lg_maxk, lg_d, lg_maxd, lg_k/lg_d*100, lg_maxacc, 8*lg_h/1000, rg_h/rg_a*100, rg_h, rg_a, rg_k, rg_maxk, rg_d, rg_maxd, rg_k/rg_d*100, rg_maxacc, 100*rg_h/1000, pg_h/pg_a*100, pg_h, pg_a, pg_k, pg_maxk, pg_d, pg_maxd, pg_k/pg_d*100, pg_maxacc, 20*pg_h/1000, total_k, total_d, total_dmg, avg_acc, total_k/games, total_d/games, avg_eff, avg_maxacc, total_dmg/games }; --------- EOF file:~/bin/_q3stat2.awk --------- BEGIN { games = 0 caps = 0 assists = 0 defence = 0 recovery = 0 score_avg = 0 score_hi = 0 score_lo = 10 regex = name }; { if ($2 ~ regex ) { games++ caps += $5 assists += $7 defence += $8 recovery += $9 score_avg += $10 if ($10 > score_hi) { score_hi = $10 } if ($10 < score_lo) { score_lo = $10 } } } END { printf "\n\ Score (avg/min/max): %d/%d/%d\n\ %2d Flag caps, %2d Assists, %2d Defences, %2d Recoveries \n", score_avg/games, score_lo, score_hi, caps, assists, defence, recovery }; -------- EOF sample output: -------- Accuracy info for (63 games): Weapon Accrcy Hits/Atts Kills Deaths Efficency Max_Accrcy Damage -------------------------------------------------------------------------------------- Gauntlet : 0 (000) 44 (006) 0.0% MachineGun : 22.2% 7601/34228 371 (012) 297 (012) 124.9% 27.1% 53.2k Shotgun : 22.6% 5588/24739 408 (018) 244 (009) 167.2% 38.8% 55.9k G.Launcher : 10.5% 99/ 944 61 (012) 74 (006) 82.4% 30.0% 9.9k R.Launcher : 46.4% 2987/ 6436 979 (040) 781 (028) 125.4% 75.7% 298.7k LightningGun: 27.5% 10386/37820 616 (048) 357 (019) 172.5% 39.8% 83.1k Railgun : 43.8% 2329/ 5315 1242 (117) 762 (064) 163.0% 67.7% 232.9k Plasmagun : 16.3% 2634/16188 337 (016) 209 (014) 161.2% 25.0% 52.7k -------------------------------------------------------------------------------------- Totals : 4014 2768 786.4k Averages : 25.2% 63 43 145.0% 43.4% 12.5k Score (avg/min/max): 73/2/219 25 Flag caps, 29 Assists, 847 Defences, 197 Recoveries