sabato 13 ottobre 2012

Un po' di AWK. Sesta parte.

Salve!

Immaginiamo di avere un file di testo, conservato nella cartella Documenti e il cui nome sia "nomi.txt", con il seguente contenuto,

Michele, Pasquale, Francesco, Marco, Luigi, Ennio, Nino.
Pecora, Toro, Asino, Cavallo, Leone, cane, gatto.
Arancia, Mandarino, Ciliegia, Fico, Uva, fragola.
Torino, Milano, Brescia, Modena, Bologna, Cosenza.
Acqua, Terra, Fuoco, Aria, Infinito, Spazio, Tempo.



e che di questo testo si voglia sapere quanti siano i caratteri utilizzati, quante le righe e quante le parole.

Per conoscere tutte queste risposte in modo immediato, ho creato uno script semplice semplice.

#!/usr/bin/awk -f
{
 nc += length($0); np += NF
 }
END { print "Il file",FILENAME " contiene:", NR " righe,", np " parole,", nc " caratteri."
 }


Copiamo lo script su un file di testo, che salveremo nella cartella Documenti e nomineremo conteggio.awk.

Spostiamoci col terminale nella cartella Documenti:

$ cd Documenti

rendiamo eseguibile lo script:

$ chmod +x conteggio.awk

Eseguiamolo:

$ ./conteggio.awk nomi.txt

Ecco il risultato:



Sullo script c'è poco da dire. Sono tutte cose che abbiamo visto nelle puntate precedenti. O quasi. Rimane ancora da spendere qualche parola su FILENAMElength($0), NR....Giuro, ne parleremo a tempo debito.
Ovviamente se i dati da manipolare si fanno assai più complessi, lo script va modificato...Anche di questo parleremo strada facendo.

Nelle prossime puntate invece riprenderemo con le variabili built-in di AWK, analizzandole nei dettagli.

PS1. Ho creato l'indice del sequel "Un po' di AWK", così risulterà meno difficile seguire le mie imprese catastrofiche. Qui. :)

PS2. A giorni, su questo blog, partirà il corso su Python. Iniziativa che sarà possibile grazie alla disponibilità del mitico Juhan, che di Python ne sa veramente tanto. Ovviamente il mio intento è di coinvolgere anche l'amico Lightuono, che per il momento dice di essere troppo impegnato con il suo nuovo lavoro.

PS3. State seguendo il mio nuovo blog? Tranquilli, niente di particolare. O forse si. Qui.

A presto! :)

Nessun commento:

Posta un commento