-------------------------------------------------- funz.awk (da usare con nawk) -------------------------------------------------- # funzione d'errore function myerror(numrec, msg) { print "errore alla linea ", numrec, "::", msg } # elenco di casi di errore e stampa di messaggio $1 > 0 { myerror(NR, "il primo valore deve essere negativo o 0") } $2 < 0 { myerror(NR, "il secondo valore deve essere positivo o 0") } END {print "fine elaborazione"} -------------------------------------------------- funz.dat -------------------------------------------------- 1 -2 -------------------------------------------------- nofunz.awk -------------------------------------------------- # caso analogo al precedente senza la funzione di errore ($1 > 0) { # si noti il backslash: non si potrebbe andare # a capo a meta` di un comando, tuttavia, usando # \ si esegue l'escape del carattere di return # in altri termini il return viene ignorato # dall'interprete print "errore alla linea ", NR, "::", \ "il primo valore deve essere negativo o 0" } ($2 < 0) { print "errore alla linea ", NR, "::", \ "il secondo valore deve essere positivo o 0" } -------------------------------------------------- on_more_lines.awk -------------------------------------------------- # per gestire record divisi su piu` linee # occorre indicare che il record separator # e` la stringa vuota BEGIN {RS=""} # per ogni record, lo stampo {print "inizio record:: ",$0," ::fine record"} -------------------------------------------------- on_more_lines.dat -------------------------------------------------- aaa bbb ccc ddd fff ggg hhh iii ll mmm --------------------------------------------------