awk

Awk

Informazione
Sviluppato da Alfred Aho , Brian Kernighan e Peter J. Weinberger
Prima versione 1979
Ultima versione IEEE Std 1003.1-2008
Depositare openbsd.su/src/usr.bin/awk
genere Utilità UNIX ( d )
Linguaggio di programmazione basato sui dati ( d )
Linguaggio di scripting
Programmazione procedurale Programmazione
basata sui dati ( en )

awk , che prende il nome dai tre creatori, Alfred Aho , Peter Weinberger e Brian Kernighan , è un linguaggio di elaborazione di file flat basato su linee , disponibile sulla maggior parte dei sistemi Unix e sotto Windows con MinGW , Cygwin o Gawk . Viene utilizzato principalmente per la manipolazione di file di testo per complesse operazioni di ricerca, sostituzione e trasformazione.

Presentazione

Awk è più spesso utilizzato per la produzione di file di testo con specifiche particolari (scambi tra diversi sistemi informativi eterogenei). Viene anche utilizzato come file di analisi ( parser ) XML o file di testo per generare comandi SQL dai dati estratti. Infine, può essere utilizzato per complesse operazioni di calcolo e formattazione di dati grezzi per creare tabelle statistiche.

Distinguiamo awk, il comando originale, dal nuovo awk (nawk), arrivato un po 'più tardi sul mercato. Le implementazioni GNU di awk sono infatti nuove awk . Il comando awk si trova solitamente in / usr / bin su Unix, ma alcuni sistemi GNU / Linux lo inseriscono in / bin. Questo impone uno shebang del tipo #!/usr/bin/env awk -fper garantire la massima portabilità degli script awk.

Agisce come un filtro programmabile che prende una serie di righe come input (come file o direttamente tramite lo standard input) e scrive sullo standard output, che può essere reindirizzato a un altro file o programma. Un programma Awk è costituito da tre blocchi distinti che possono o non possono essere utilizzati per elaborare un file (pre-elaborazione, elaborazione, post-elaborazione). Awk legge l'input riga per riga, quindi seleziona (o meno) le righe che devono essere elaborate dalle espressioni regolari (e possibilmente i numeri di riga). Una volta selezionata la riga, viene suddivisa in campi secondo un separatore di input indicato nel programma awk dal simbolo FS (che di default corrisponde allo spazio o al carattere di tabulazione). Quindi i diversi campi sono disponibili nelle variabili: $ 1 (primo campo), $ 2 (secondo campo), $ 3 (terzo campo),…, $ NF (ultimo campo).

"Awk" è anche l'estensione del nome file utilizzata per gli script scritti in questa lingua (usata raramente).

La sintassi si ispira a C  :
awk [options] [programme] [fichier]
dove è la struttura del programma:
'motif1 { action1 } motif2 { action2 } …'
Ogni riga del file viene successivamente confrontata con i diversi pattern (il più delle volte espressioni regolari e globalmente un'espressione booleana) e l'azione del primo pattern che restituisce il vero valore viene eseguito. Se non viene accettato alcun motivo, il programma procede all'elaborazione della riga successiva.

Alcune opzioni:

Descrizione tecnica

Un file è diviso in righe ( record in inglese) a loro volta suddivise in campi ( campi in inglese)

I separatori input-output sono memorizzati in variabili e possono essere modificati:

Abbiamo due maschere speciali:

Per definire un intervallo, usiamo la virgola in questo modo:

Diverse funzioni sono già implementate:

Abbiamo strutture di controllo. La sintassi proviene direttamente da C:

Rispetto a C, ci sono alcune estensioni:

Qualche esempio

Implementazione

Esistono vari programmi che utilizzano la sintassi dell'originale awk, ecco i più famosi:

Vedi anche

Bibliografia

Articoli Correlati

link esterno