Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
doc:programmation:awk [18/10/2012 07:38] smolski |
doc:programmation:awk [18/10/2012 08:38] smolski |
||
---|---|---|---|
Ligne 115: | Ligne 115: | ||
==== Scripts awk ==== | ==== Scripts awk ==== | ||
+ | |||
+ | <note warning>**ATTENTION** ! Vérifiez toujours l'écriture de chaque script donné ici avant de l'appliquer !</note> | ||
awk a été utilisé précédemment en mode lignes de commande. Lorsque le programme awk devient complexe, ce dernier peut être stocké dans un fichier : | awk a été utilisé précédemment en mode lignes de commande. Lorsque le programme awk devient complexe, ce dernier peut être stocké dans un fichier : | ||
prog.awk | prog.awk | ||
<code bash> | <code bash> | ||
- | cat > prog.awk | + | cat > prog.awk <<EOS |
/^CL/,/^E/ { | /^CL/,/^E/ { | ||
print NR, $0 | print NR, $0 | ||
- | }</code> | + | } |
+ | EOS</code> | ||
Puis interprété grâce à l'option -f : | Puis interprété grâce à l'option -f : | ||
Ligne 132: | Ligne 135: | ||
==== Pré et Post opérations ==== | ==== Pré et Post opérations ==== | ||
+ | |||
+ | <note warning>**ATTENTION** ! Vérifiez toujours l'écriture de chaque script donné ici avant de l'appliquer !</note> | ||
awk offre des sections pré-traitement (BEGIN) et post-traitement (END) lors de l'analyse d'un fichier. La structure du script awk est : | awk offre des sections pré-traitement (BEGIN) et post-traitement (END) lors de l'analyse d'un fichier. La structure du script awk est : | ||
<code bash> | <code bash> | ||
- | cat | + | cat > prog.awk <<EOS |
+ | /^CL/,/^E/ | ||
BEGIN { | BEGIN { | ||
action | action | ||
Ligne 147: | Ligne 153: | ||
action | action | ||
} | } | ||
+ | EOS</code> | ||
+ | |||
+ | Donne : | ||
+ | <code bash> | ||
+ | awk -f prog.awk file.txt | ||
+ | CLARA F 11 | ||
+ | CLEMENT M 7 | ||
+ | EMMA F 6</code> | ||
Les blocs BEGIN et END ne sont pas obligatoires. Il peut y avoir un bloc BEGIN sans bloc END, un bloc END sans bloc BEGIN, ou aucun de ces 2 blocs. | Les blocs BEGIN et END ne sont pas obligatoires. Il peut y avoir un bloc BEGIN sans bloc END, un bloc END sans bloc BEGIN, ou aucun de ces 2 blocs. | ||
Des scripts bien plus complexes peuvent alors être écrits. Par exemple, extraire 2 colonnes en remplaçant les tabulations par des ";" et afficher le nombre de lignes à la fin : | Des scripts bien plus complexes peuvent alors être écrits. Par exemple, extraire 2 colonnes en remplaçant les tabulations par des ";" et afficher le nombre de lignes à la fin : | ||
- | + | <code bash> | |
- | shell> cat prog.awk | + | cat > prog.awk <<EOS |
BEGIN { | BEGIN { | ||
FS=" " | FS=" " | ||
Ligne 164: | Ligne 177: | ||
printf "\nThe file has %d lines\n", NR | printf "\nThe file has %d lines\n", NR | ||
} | } | ||
+ | EOS</code> | ||
- | shell> nawk -f prog.awk file.txt | + | |
+ | <code bash> | ||
+ | awk -f prog.awk file.txt | ||
Nom;Age | Nom;Age | ||
Ligne 176: | Ligne 192: | ||
THEO;8 | THEO;8 | ||
- | The file has 8 lines | + | The file has 8 lines </code> |
+ | |||
+ | <note warning>**ATTENTION** ! Vérifiez toujours l'écriture de chaque script donné ici avant de l'appliquer !</note> | ||
+ | |||
+ | |||
+ | ===== Fonctions ===== | ||
+ | |||
+ | Le parseur awk offre beaucoup de fonctions internes très utiles pour traiter les données. \\ | ||
+ | Consulter les manuels de l'utilitaire awk pour la liste complète des fonctions internes, en voici une liste partielle : | ||
+ | |||
+ | ==== int ==== | ||
+ | |||
+ | Convertir une valeur en entier avec la fonction **int** : | ||
+ | <code bash> | ||
+ | awk '/CHLOE/ { print $3, int($3/5)}' file.txt | ||
+ | 12 2</code> | ||
+ | |||
+ | |||
==== Titre ==== | ==== Titre ==== | ||
//À suivre...// **Jojo** ;-) | //À suivre...// **Jojo** ;-) |