IMC!


Contenuti


Foto

 







Curiosando...
Novita  Novità Link  Link Blog  Blog English  Español 
Esempi di script in AWK

In questa sezione saranno presentati dei brevi script nel liguaggio AWK. Nonostante siano molto semplici, possono essere utili per capire la logica che guida questo linguaggio di scripting, un po diversa da linguaggi di programmazione pi� noti. Per avere informazioni di carattere generale su AWK, potete leggere la Voce AWK su Wikipedia.
AWK � un linguaggio interpretato volto alla processazione di file di testo. Per l'interprete, un file di testo � una grande tabella. Ciascuna riga del testo � una riga della tabella (detta record). Ciascuna parola circondata da spazi � una colonna di tale tabella, detta field (o campo). Quando un file di testo viene dato in ingresso a uno script AWK, succede quanto segue:
  1. L'interprete AWK apre automaticamente il file.
  2. L'interprete AWK scorre tutti i record (righe) del file di testo, e applica le regole di modifica indicate dai comandi AWK. Sottolineiamo che il file viene scorso automaticamente, il programmatore non deve implementare nessun ciclo for, while, foreach.
  3. L'interprete AWK salva il file e lo chiude.
Come si pu� intuire, � possibile processare grandi quantit� di dati scrivendo semplici regole, risparmiando il tempo necessario a implementare operazioni come l'apertura e chiusura dei file, o la lettura e scrittura di righe.
Altra grande semplificazione di AWK � l'assenza di variabili tipizzate: ciascuna variabile pu� essere indifferentemente trattata come testo o numero.

La struttura di un comando AWR per processare un record �:

(condizione) {azione}

  • Condizione rappresenta una condizione che individua un record o una porzione di record sul quale si desidera agire.
  • Azione rappresenta l'azione da eseguire sul record o porzione di record scelto.
Nei successivi file di esempio faremo sempre riferimento a un file di testo contenente l'elenco delle nazioni con superficie, popolazione, continente:

USSR            86250   262     Asia
USA             3615    219     Nord America
China           3692    866     Asia
Canada          3852    24      Nord America
Brazil          3286    116     South America
Australia       2968    14      Oceania
India           1269    637     Asia
Argentina       1072    26      South America
Sudan           968     19      Africa
Italy           920     60      Europe
Angola          1246    12      Africa
Austria         83      8       Europe
Spain           504     45      Europe
 

Selezionare i campi
Questo esempio mostra come vengono identificati i campi di ciascun record: tramite numeri preceduti dal $ (proprio come avviene per i parametri passati dalla riga di comando nella Bash).

#!/usr/bin/awk -f
# Questo script stampa solo nazioni e continenti

{print $1, $4}
 

Condizioni e variabili
Questi esempi mostrano come sia possibile inserire condizioni di carattere numerico e che fanno uso di funzioni complesse. Notiamo come non esista tipizzazione in AWK: la stringa letta, se rappresenta un numero, pu� essere automaticamente convertita e usata come numero.

#!/usr/bin/awk -f
# Questo script stampa tutti i dati relativi solo alle
# nazioni con pi� di 50 milioni di persone.

( $3 > 50 ) { print $0 }



#!/usr/bin/awk -f
# Questo script stampa tutti i dati relativi solo alle
# nazioni il cui nome � pi� lungo di 5 caratteri

( length($1)>=5 ) { print $0 }
 

Espressioni regolari
Questi esempi mostrano come sia possibile implementare le espressioni regolai in AWK. Da notare la presenza delle barre / per delimitare l'espressione regolare, e la presenza della ˜ per riferire l'espressione regolare a un solo campo anzich� a tutto il record.

#!/usr/bin/awk -f
# Questo script stampa tutti i dati relativi solo alle
# nazioni asiatiche

(/.Asia/) {print $0}
 



#!/usr/bin/awk -f
# Questo script stampa tutti i dati relativi solo alle
# nazioni europee

( /Europe/) { print $0 }
 



#!/usr/bin/awk -f
# Questo script stampa tutti i dati relativi solo alle
# nazioni inizianti per A

( $1~/A./ ) { print $0 }
 

Condizioni composte
Nei seguenti esempi possiamo vedere come sia possibile combinare pi� condizioni tramite degli operatori booleani del tutto simili a quelli implementati nel linguaggio C.

#!/usr/bin/awk -f
# Questo script stampa tutti i dati relativi solo alle
# nazioni con pi� di 50 milioni di persone e una
# superficie di pi� di 2 milioni di km quadrati

( $3 > 50 && $2 > 2000) { print $0 }
 



#!/usr/bin/awk -f
# Questo script stampa tutti i dati relativi solo alle
# nazioni africane che iniziano per A

( $0~/Africa/ && $1~/^A/ ) { print $0 }
 



#!/usr/bin/awk -f
# Questo script stampa tutti i dati relativi solo alle
# nazioni europee il cui nome inzia per A o S

( $0~/Europe/ && ($1~/^A/ || $1~/^S/) ) { print $0 }
 







Inserire la password di amministratore:



Password:

Riga:


Fatal error: Call to undefined function sqlite_open() in /membri/giacobbe85/include/commenti.inc.php on line 324