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.