Next: APPLICAZIONI SU UNIX
Up: awk
Previous: Funzioni predefinite
  Contents
Nel file ~infochim/wrk/esercitaz sono riportati
i punteggi ottenuti nelle prime due esercitazioni dai vari studenti del corso.
Il file contiene nell'ordine: nome account, turno, punteggio eserc.1, punteggio
eserc. 2:
-
- acciai D 2 5
allegra A 2 3
allegri A 0 0
arturoni A 2 5
...
La media dei punteggi della prima esercitazione si ottiene con il seguente programma
awk:
-
- {s=s+$3;n=n+1}
END {print "media= ",s/n}
Possiamo scrivere questo programma nel file media.awk e eseguire
il comando
-
- awk -f media.awk esercitaz
Sull'output viene riportata la risposta:
-
- media= 1.54082
Se ora vogliamo il punteggio medio di chi appartiene al turno A, possiamo farlo
introducendo un pattern nella prima istruzione:
-
- /A/ {s=s+$3;n=n+1}
Questo sistema funziona solo se siamo sicuri che l'account è sempre in minuscolo,
e che quindi la stringa "A" può essere presente solo
nel campo del turno.
Un sistema più corretto e sicuro è richiedere che la A si trovi nel
secondo campo. In questo caso il pattern deve essere non un'espressione regolare,
ma un'espressione relazionale:
-
- $2=="A" {s=s+$3;n=n+1}
Se invece vogliamo stampare in fondo a ogni riga la somma dei due punteggi:
-
- {print $0, $3+$4}
Questa istruzione invece stampa solo le righe relative a studenti che hanno
preso almeno 4 nella seconda esercitazione:
-
- $4 > 3
Next: APPLICAZIONI SU UNIX
Up: awk
Previous: Funzioni predefinite
  Contents
Giorgio F. Signorini
2002-12-18