AWK - Sintassi di base
AWK è semplice da usare. Possiamo fornire comandi AWK direttamente dalla riga di comando o sotto forma di un file di testo contenente comandi AWK.
Riga di comando AWK
Possiamo specificare un comando AWK tra virgolette singole nella riga di comando come mostrato -
awk [options] file ...
Esempio
Considera un file di testo marks.txt con il seguente contenuto -
1) Amit Physics 80
2) Rahul Maths 90
3) Shyam Biology 87
4) Kedar English 85
5) Hari History 89
Cerchiamo di visualizzare il contenuto completo del file utilizzando AWK come segue:
Example
[jerry]$ awk '{print}' marks.txt
Eseguendo questo codice, ottieni il seguente risultato:
Output
1) Amit Physics 80
2) Rahul Maths 90
3) Shyam Biology 87
4) Kedar English 85
5) Hari History 89
File di programma AWK
Possiamo fornire comandi AWK in un file di script come mostrato -
awk [options] -f file ....
Innanzitutto, crea un file di testo command.awk contenente il comando AWK come mostrato di seguito -
{print}
Ora possiamo istruire l'AWK a leggere i comandi dal file di testo ed eseguire l'azione. Qui, otteniamo lo stesso risultato mostrato nell'esempio sopra.
Example
[jerry]$ awk -f command.awk marks.txt
Eseguendo questo codice, ottieni il seguente risultato:
Output
1) Amit Physics 80
2) Rahul Maths 90
3) Shyam Biology 87
4) Kedar English 85
5) Hari History 89
Opzioni standard AWK
AWK supporta le seguenti opzioni standard che possono essere fornite dalla riga di comando.
L'opzione -v
Questa opzione assegna un valore a una variabile. Consente l'assegnazione prima dell'esecuzione del programma. Il seguente esempio descrive l'utilizzo dell'opzione -v.
Example
[jerry]$ awk -v name=Jerry 'BEGIN{printf "Name = %s\n", name}'
Eseguendo questo codice, ottieni il seguente risultato:
Output
Name = Jerry
L'opzione --dump-variables [= file]
Stampa un elenco ordinato di variabili globali e dei loro valori finali su file. Il file predefinito èawkvars.out.
Example
[jerry]$ awk --dump-variables ''
[jerry]$ cat awkvars.out
Quando si esegue il codice sopra, si ottiene il seguente risultato:
Output
ARGC: 1
ARGIND: 0
ARGV: array, 1 elements
BINMODE: 0
CONVFMT: "%.6g"
ERRNO: ""
FIELDWIDTHS: ""
FILENAME: ""
FNR: 0
FPAT: "[^[:space:]]+"
FS: " "
IGNORECASE: 0
LINT: 0
NF: 0
NR: 0
OFMT: "%.6g"
OFS: " "
ORS: "\n"
RLENGTH: 0
RS: "\n"
RSTART: 0
RT: ""
SUBSEP: "\034"
TEXTDOMAIN: "messages"
L'opzione --help
Questa opzione stampa il messaggio di aiuto sullo standard output.
Example
[jerry]$ awk --help
Eseguendo questo codice, ottieni il seguente risultato:
Output
Usage: awk [POSIX or GNU style options] -f progfile [--] file ...
Usage: awk [POSIX or GNU style options] [--] 'program' file ...
POSIX options : GNU long options: (standard)
-f progfile --file=progfile
-F fs --field-separator=fs
-v var=val --assign=var=val
Short options : GNU long options: (extensions)
-b --characters-as-bytes
-c --traditional
-C --copyright
-d[file] --dump-variables[=file]
-e 'program-text' --source='program-text'
-E file --exec=file
-g --gen-pot
-h --help
-L [fatal] --lint[=fatal]
-n --non-decimal-data
-N --use-lc-numeric
-O --optimize
-p[file] --profile[=file]
-P --posix
-r --re-interval
-S --sandbox
-t --lint-old
-V --version
L'opzione --lint [= fatal]
Questa opzione consente il controllo di costrutti non portabili o dubbi. Quando un argomentofatalviene fornito, tratta i messaggi di avviso come errori. Il seguente esempio lo dimostra:
Example
[jerry]$ awk --lint '' /bin/ls
Eseguendo questo codice, ottieni il seguente risultato:
Output
awk: cmd. line:1: warning: empty program text on command line
awk: cmd. line:1: warning: source file does not end in newline
awk: warning: no program text at all!
L'opzione --posix
Questa opzione attiva la rigorosa compatibilità POSIX, in cui tutte le estensioni comuni e specifiche di gawk sono disabilitate.
L'opzione --profile [= file]
Questa opzione genera una versione abbastanza stampata del programma in file. Il file predefinito èawkprof.out. Di seguito un semplice esempio illustra questo:
Example
[jerry]$ awk --profile 'BEGIN{printf"---|Header|--\n"} {print}
END{printf"---|Footer|---\n"}' marks.txt > /dev/null
[jerry]$ cat awkprof.out
Eseguendo questo codice, ottieni il seguente risultato:
Output
# gawk profile, created Sun Oct 26 19:50:48 2014
# BEGIN block(s)
BEGIN {
printf "---|Header|--\n"
}
# Rule(s) {
print $0
}
# END block(s)
END {
printf "---|Footer|---\n"
}
L'opzione --traditional
Questa opzione disabilita tutte le estensioni specifiche di gawk.
L'opzione --version
Questa opzione visualizza le informazioni sulla versione del programma AWK.
Example
[jerry]$ awk --version
Quando questo codice viene eseguito, produce il seguente risultato:
Output
GNU Awk 4.0.1
Copyright (C) 1989, 1991-2012 Free Software Foundation.