AWK - Flusso di lavoro
Per diventare un programmatore AWK esperto, devi conoscerne i componenti interni. AWK segue un semplice flusso di lavoro: lettura, esecuzione e ripetizione. Il diagramma seguente illustra il flusso di lavoro di AWK:
Leggere
AWK legge una riga dal flusso di input (file, pipe o stdin) e la memorizza.
Eseguire
Tutti i comandi AWK vengono applicati in sequenza sull'input. Per impostazione predefinita, AWK esegue i comandi su ogni riga. Possiamo limitare questo fornendo modelli.
Ripetere
Questo processo si ripete finché il file non raggiunge la fine.
Struttura del programma
Cerchiamo ora di capire la struttura del programma di AWK.
BEGIN blocco
La sintassi del blocco BEGIN è la seguente:
Syntax
BEGIN {awk-commands}
Il blocco BEGIN viene eseguito all'avvio del programma. Viene eseguito solo una volta. Questo è un buon posto per inizializzare le variabili. BEGIN è una parola chiave AWK e quindi deve essere in lettere maiuscole. Tieni presente che questo blocco è facoltativo.
Blocco del corpo
La sintassi del blocco del corpo è la seguente:
Syntax
/pattern/ {awk-commands}
Il blocco del corpo applica i comandi AWK su ogni riga di input. Per impostazione predefinita, AWK esegue i comandi su ogni riga. Possiamo limitare questo fornendo modelli. Nota che non ci sono parole chiave per il blocco Body.
Blocco FINE
La sintassi del blocco END è la seguente:
Syntax
END {awk-commands}
Il blocco END viene eseguito alla fine del programma. END è una parola chiave AWK e quindi deve essere in lettere maiuscole. Tieni presente che questo blocco è facoltativo.
Creiamo un file marks.txt che contiene il numero di serie, il nome dello studente, il nome del soggetto e il numero di voti ottenuti.
1) Amit Physics 80
2) Rahul Maths 90
3) Shyam Biology 87
4) Kedar English 85
5) Hari History 89
Visualizziamo ora il contenuto del file con l'intestazione utilizzando lo script AWK.
Example
[jerry]$ awk 'BEGIN{printf "Sr No\tName\tSub\tMarks\n"} {print}' marks.txt
Quando questo codice viene eseguito, produce il seguente risultato:
Output
Sr No Name Sub Marks
1) Amit Physics 80
2) Rahul Maths 90
3) Shyam Biology 87
4) Kedar English 85
5) Hari History 89
All'inizio, AWK stampa l'intestazione dal blocco BEGIN. Quindi, nel blocco del corpo, legge una riga da un file ed esegue il comando di stampa di AWK che stampa semplicemente il contenuto sul flusso di output standard. Questo processo si ripete finché il file non raggiunge la fine.