Awk
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.