« Awk » : différence entre les versions

De Justine's wiki
Aller à la navigation Aller à la recherche
(Page créée avec « = Présentation : fonctionnement global = Awk suit une logique simple : Lis, execute, répète. vignette == Structure d'un programme ==... »)
 
Aucun résumé des modifications
Ligne 52 : Ligne 52 :
5)Hari History89
5)Hari History89
</syntaxhighlight>
</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.

Version du 16 septembre 2019 à 19:50

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.