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.