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 [27/10/2013 17:54] smolski |
doc:programmation:awk [27/10/2013 18:07] captnfab |
||
---|---|---|---|
Ligne 25: | Ligne 25: | ||
===== Exercices ===== | ===== Exercices ===== | ||
- | Créez le fichier(([[:doc:systeme:touch]])) file.txt ainsi : | + | Créez((Vous pouvez faire cela avec votre éditeur de texte favori, voire avec [[:doc:systeme:cat]] ou simplement en téléchargeant la liste.)) le fichier ''file.txt'' contenant la liste suivante : |
- | <code user> | + | <code raw file.txt> |
- | touch file.txt</code> | + | |
- | + | ||
- | Et rédigez(([[:doc:systeme:cat]])) dedans cette liste ainsi : | + | |
- | <code user tp_awk1> | + | |
Nom Genre Age | Nom Genre Age | ||
--------------------------------------- | --------------------------------------- | ||
Ligne 132: | Ligne 128: | ||
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'' comme ici : | 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'' comme ici : | ||
- | <code user prog.awk> | + | <code awk prog.awk> |
/^CL/,/^E/ { | /^CL/,/^E/ { | ||
print NR, \$0 | print NR, \$0 | ||
Ligne 151: | Ligne 147: | ||
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 user prog_awk> | + | <code awk prog.awk> |
/^CL/,/^E/ | /^CL/,/^E/ | ||
BEGIN { | BEGIN { | ||
Ligne 177: | Ligne 173: | ||
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 user prog_awk> | + | <code awk prog.awk> |
BEGIN { | BEGIN { | ||
FS=" " | FS=" " | ||
Ligne 294: | Ligne 290: | ||
La possibilité de créer des fonctions utilisateur est une des fonctionnalités les plus importantes de l'utilitaire awk. Les fonctions sont définies avec le mot clé **function**. | La possibilité de créer des fonctions utilisateur est une des fonctionnalités les plus importantes de l'utilitaire awk. Les fonctions sont définies avec le mot clé **function**. | ||
- | <code user prog_awk> | + | <code awk prog.awk> |
function gentag(nom,age) { | function gentag(nom,age) { | ||
tmp=tolower(substr(nom,1,3)) | tmp=tolower(substr(nom,1,3)) | ||
Ligne 334: | Ligne 330: | ||
Les enfants sont ils en primaire ou au collège avec if() {} else {} ? | Les enfants sont ils en primaire ou au collège avec if() {} else {} ? | ||
- | <code user prog_awk> | + | <code awk prog.awk> |
BEGIN { | BEGIN { | ||
OFS="," | OFS="," | ||
Ligne 365: | Ligne 361: | ||
Remplacer l'âge de l'enfant par un nombre de points avec while() {}. | Remplacer l'âge de l'enfant par un nombre de points avec while() {}. | ||
- | <code user prog_awk> | + | <code awk prog.awk> |
NR <=2 { next } | NR <=2 { next } | ||
{ | { | ||
Ligne 391: | Ligne 387: | ||
Remplacer l'âge de l'enfant par un nombre de points avec for (i= ; i< ; i++ ) { }. | Remplacer l'âge de l'enfant par un nombre de points avec for (i= ; i< ; i++ ) { }. | ||
- | <code user prog_awk> | + | <code awk prog.awk> |
NR <=2 { next } | NR <=2 { next } | ||
{ | { | ||
Ligne 420: | Ligne 416: | ||
Calculer la moyenne d'âge des enfants par sexe : | Calculer la moyenne d'âge des enfants par sexe : | ||
- | <code user prog_awk> | + | <code awk prog.awk> |
{ | { | ||
if ( NR <= 2 ) { next } # skip first 2 lines | if ( NR <= 2 ) { next } # skip first 2 lines |