Successivo: Visitare un intero vettore, Precedente: Impostare elementi, Su: Fondamenti sui vettori [Contenuti][Indice]
Il seguente programma prende una lista di righe, ognuna delle quali inizia con un numero di riga, e le stampa in ordine di numero di riga. I numeri di riga non sono ordinati al momento della lettura, ma sono invece in ordine sparso. Questo programma ordina le righe mediante la creazione di un vettore che usa i numeri di riga come indici. Il programma stampa poi le righe ordinate secondo il loro numero. È un programma molto semplice e non è in grado di gestire numeri ripetuti, salti di riga o righe che non iniziano con un numero:
{ if ($1 > massimo) massimo = $1 vett[$1] = $0 } END { for (x = 1; x <= massimo; x++) print vett[x] }
La prima regola tiene traccia del numero di riga più grande visto
durante la lettura;
memorizza anche ogni riga nel vettore vett
, usando come indice
il numero di riga.
La seconda regola viene eseguita dopo che è stato letto tutto l’input, per
stampare tutte le righe.
Quando questo programma viene eseguito col seguente input:
5 Io sono l'uomo Cinque 2 Chi sei? Il nuovo numero due! 4 . . . E quattro a terra 1 Chi è il numero uno? 3 Sei il tre.
Il suo output è:
1 Chi è il numero uno? 2 Chi sei? Il nuovo numero due! 3 Sei il tre. 4 . . . E quattro a terra 5 Io sono l'uomo Cinque
Se un numero di riga appare più di una volta, l’ultima riga con quel dato
numero prevale sulle altre.
Le righe non presenti nel vettore
si possono saltare con un semplice perfezionamento della
regola END
del programma, in questo modo:
END { for (x = 1; x <= massimo; x++) if (x in vett) print vett[x] }
Successivo: Visitare un intero vettore, Precedente: Impostare elementi, Su: Fondamenti sui vettori [Contenuti][Indice]