AWK - Syntaxe de base

AWK est simple à utiliser. Nous pouvons fournir des commandes AWK soit directement à partir de la ligne de commande, soit sous la forme d'un fichier texte contenant des commandes AWK.

Ligne de commande AWK

Nous pouvons spécifier une commande AWK entre guillemets simples sur la ligne de commande comme indiqué -

awk [options] file ...

Exemple

Considérez un fichier texte marks.txt avec le contenu suivant -

1) Amit     Physics    80
2) Rahul    Maths      90
3) Shyam    Biology    87
4) Kedar    English    85
5) Hari     History    89

Laissez-nous afficher le contenu complet du fichier en utilisant AWK comme suit -

Example

[jerry]$ awk '{print}' marks.txt

En exécutant ce code, vous obtenez le résultat suivant -

Output

1) Amit     Physics    80
2) Rahul    Maths      90
3) Shyam    Biology    87
4) Kedar    English    85
5) Hari     History    89

Fichier programme AWK

Nous pouvons fournir des commandes AWK dans un fichier de script comme indiqué -

awk [options] -f file ....

Commencez par créer un fichier texte command.awk contenant la commande AWK comme indiqué ci-dessous -

{print}

Nous pouvons maintenant demander à l'AWK de lire les commandes du fichier texte et d'exécuter l'action. Ici, nous obtenons le même résultat que celui indiqué dans l'exemple ci-dessus.

Example

[jerry]$ awk -f command.awk marks.txt

En exécutant ce code, vous obtenez le résultat suivant -

Output

1) Amit  Physics 80
2) Rahul Maths   90
3) Shyam Biology 87
4) Kedar English 85
5) Hari  History 89

Options standard AWK

AWK prend en charge les options standard suivantes qui peuvent être fournies à partir de la ligne de commande.

L'option -v

Cette option affecte une valeur à une variable. Il permet l'affectation avant l'exécution du programme. L'exemple suivant décrit l'utilisation de l'option -v.

Example

[jerry]$ awk -v name=Jerry 'BEGIN{printf "Name = %s\n", name}'

En exécutant ce code, vous obtenez le résultat suivant -

Output

Name = Jerry

L'option --dump-variables [= file]

Il imprime une liste triée de variables globales et leurs valeurs finales dans un fichier. Le fichier par défaut estawkvars.out.

Example

[jerry]$ awk --dump-variables ''
[jerry]$ cat awkvars.out

En exécutant le code ci-dessus, vous obtenez le résultat suivant -

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'option --help

Cette option imprime le message d'aide sur la sortie standard.

Example

[jerry]$ awk --help

En exécutant ce code, vous obtenez le résultat suivant -

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'option --lint [= fatal]

Cette option permet de vérifier les constructions non portables ou douteuses. Quand une disputefatalest fourni, il traite les messages d'avertissement comme des erreurs. L'exemple suivant illustre ceci -

Example

[jerry]$ awk --lint '' /bin/ls

En exécutant ce code, vous obtenez le résultat suivant -

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'option --posix

Cette option active la compatibilité POSIX stricte, dans laquelle toutes les extensions communes et spécifiques à gawk sont désactivées.

L'option --profile [= fichier]

Cette option génère une version assez imprimée du programme dans le fichier. Le fichier par défaut estawkprof.out. Ci-dessous un exemple simple illustre cela -

Example

[jerry]$ awk --profile 'BEGIN{printf"---|Header|--\n"} {print} 
END{printf"---|Footer|---\n"}' marks.txt > /dev/null 
[jerry]$ cat awkprof.out

En exécutant ce code, vous obtenez le résultat suivant -

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'option --traditional

Cette option désactive toutes les extensions spécifiques à gawk.

L'option --version

Cette option affiche les informations de version du programme AWK.

Example

[jerry]$ awk --version

Lorsque ce code est exécuté, il produit le résultat suivant -

Output

GNU Awk 4.0.1
Copyright (C) 1989, 1991-2012 Free Software Foundation.