Il comando awk esegue la corrispondenza dei modelli sui file. Si basa sul linguaggio di programmazione AWK. La parola chiave awk è seguita dal pattern, dall'azione da eseguire e dal nome del file. L'azione da eseguire è indicata tra parentesi graffe. Il modello e l'azione da eseguire devono essere specificati tra virgolette singole. Se il modello non è specificato, l'azione viene eseguita su tutti i dati di input; tuttavia, se l'azione non è specificata, viene stampata l'intera riga. Il comando awk può essere eseguito dalla riga di comando o da un file di script awk.
Il comando awk può essere utilizzato per elaborare file di testo in vari modi, come estrarre il testo che corrisponde a un determinato modello; eliminare il testo che corrisponde a un determinato modello; l'aggiunta di testo corrispondente a un determinato modello; e molto altro.
Sintassi
La sintassi del comando awk è:
# awk [options] ['patterns {actions}'] {file names}
Esempi di comando awk
1. Stampa la quinta colonna (aka campo) in un file separato da spazi:
# awk '{print $5}' filename
2. Stampa la seconda colonna delle righe contenenti “pippo” in un file separato da spazi:
# awk '/foo/ {print $2}' filename
3. Stampa l'ultima colonna di ogni riga in un file, utilizzando una virgola (invece dello spazio) come separatore di campo:
# awk -F ',' '{print $NF}' filename
4. Somma i valori nella prima colonna di un file e stampa il totale:
# awk '{s+=$1} END {print s}' filename
5. Stampa ogni terza riga a partire dalla prima riga:
# awk 'NR%3==1' filename
6. Stampa valori diversi in base alle condizioni:
# awk '{if ($1 == "foo") print "Exact match foo"; else if ($1 ~ "bar") print "Partial match bar"; else print "Baz"}' filename
7. Stampa tutte le righe in cui il valore della decima colonna è uguale al valore specificato:
# awk '($10 == value)'
8. Stampa tutte le righe il cui valore della 10a colonna è compreso tra un minimo e un massimo:
# awk '($10 >= min_value && $10 <= max_value)'