« Awk » : différence entre les versions
Aucun résumé des modifications |
Aucun résumé des modifications |
||
Ligne 1 : | Ligne 1 : | ||
[[Category:linux]] | |||
= Présentation : fonctionnement global = | = Présentation : fonctionnement global = | ||
Awk suit une logique simple : Lis, execute, répète. | Awk suit une logique simple : Lis, execute, répète. |
Dernière version du 22 juin 2022 à 11:39
Présentation : fonctionnement global
Awk suit une logique simple : Lis, execute, répète.

Structure d'un programme
Nous avons trois blocs : BEGIN, le corps, et END.
Les mots-clefs sont en majuscules.
BEGIN
BEGIN {awk-commands}
Ce bloc est optionnel et ne s'éxecute qu'une seule fois, au démarrage. Il est optionnel.
BEGIN est un mot-clef.
Le corps
/pattern/ {awk-commands}
Ce bloc applique des commandes à chaque ligne, par défaut (à moins qu'on ne le restreigne avec des patterns).
END
END {awk-commands}
Même principe que le BEGIN, mais à la fin.
Premiers tests
Je pars du fichier suivant :
1) Amit Physics 80 2) Rahul Maths 90 3) Shyam Biology 87 4) Kedar English 85 5) Hari History 89
Et avec un petit traitement par awk:
<syntaxhighlight lang='bash'> [justine@argonaut awk]$ awk 'BEGIN{printf Sr NotNametSubttMarksn} {print}' test Sr NoNameSubMarks 1)Amit Physics80 2)Rahul Maths90 3)Shyam Biology87 4)Kedar English85 5)Hari History89 </syntaxhighlight>
Au début, on affiche un header. Puis on affiche chaque ligne.
Quelques options
Utiliser un fichier de commandes
On peut envoyer des instructions depuis un fichier avec -f:
<syntaxhighlight lang='bash'> $ awk -f command.awk marks.txt </syntaxhighlight>
Variables
On peut assigner des variables avec -v :
<syntaxhighlight lang='bash'> $ awk -v name=Jerry 'BEGIN{printf Name = %sn, name}' Name = Jerry </syntaxhighlight>
Voir les variables globales
L'option --dump-variables[=file] dumpe un fichier de variables globales, par défaut awkvars.out.
lint
L'option --lint permet d'avoir un linter.