Apparentemente NR e FNR fanno la stessa cosa: contano il numero dei records. Tuttavia la differenza tra le due variabili built-in è sostanziale.
Cerchiamo di coglierla con qualche esempio.
Partiamo dalla classica tabella (tab1.txt)
Luigi Marco Luisa Ennio
Nino Patrizio Ada Mirco
Franco Luca Andrea Ugo
Letizia Barbara Giorgo
Lucia Vincenzo Ettore
awk 'BEGIN{print "\n"}{print "FNR: " FNR, " " "NR: " NR, $0 }END{print "\n"}' tab1.txt
Fin qui niente di particolare.Ma se gli passiamo due file...
Prepariamo un'altra tabella (tab2.txt)
a5 b6 c7 d8
e8 f9 g1 h2
i3 l4 m5 n6
o7 p8 q9 r1
awk 'BEGIN{print "\n"}{print "FNR: " FNR, " " "NR: " NR, $0 }END{print "\n"}' tab1.txt tab2.txt
Notate qualcosa di strano? Bene!Possiamo perciò concludere dicendo che sia NR che FNR contano i numeri di records; tuttavia, mentre NR somma i records del primo file con quelli del secondo, FNR, finiti i records del primo file, inizia a ricontare quelli del secondo. La prossima volta, è probabile già domani, potrò finalmente parlare di cose più toste. E si ritorna così agli arrays. :)
Vi ricordo che l'indice del sequel "Un po' di AWK" lo trovate qui. Vi consiglio di dare un'occhiata anche all'indice di "Brevi Esercizi".
Alla prossima!
Nessun commento:
Posta un commento