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 04:45] smolski |
doc:programmation:awk [18/10/2012 05:33] smolski |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== awk ====== | ====== awk ====== | ||
- | (//non testé// - **smolski** 18/10/2012) Le retour sur le forum est ici : | + | (//testé// - **smolski** 18/10/2012) Le retour sur le forum est ici : |
- | * [[//url// | Lien vers le forum concernant ce tuto]] N'hésitez pas à y faire par de vos remarques, succès, améliorations ou échecs ! | + | * [[http://debian-facile.org/viewtopic.php?id=6057 | Lien vers le forum concernant ce tuto]] N'hésitez pas à y faire par de vos remarques, succès, améliorations ou échecs ! |
- | * Objet : awk - awk | + | * Objet : awk |
* Niveau requis : AVISÉ | * Niveau requis : AVISÉ | ||
- | * Commentaires : // Cet utilitaire a été créÉ dans le but de remplacer les commandes [[commande:grep]] et [[commande:sed]]. // | + | * Commentaires : // Cet utilitaire a été créé dans le but de remplacer les commandes [[commande:grep]] et [[commande:sed]]. // |
* Débutant, à savoir : | * Débutant, à savoir : | ||
[[manuel:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) | [[manuel:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) | ||
Ligne 66: | Ligne 66: | ||
CAMILLE 7 M</code> | CAMILLE 7 M</code> | ||
+ | **Nota** : \\ | ||
L'ordre des colonnes a été modifié pour l'exemple. | L'ordre des colonnes a été modifié pour l'exemple. | ||
Ligne 82: | Ligne 83: | ||
CLEMENT M 7 | CLEMENT M 7 | ||
EMMA F 6</code> | EMMA F 6</code> | ||
+ | |||
+ | ==== Variables awk ==== | ||
+ | |||
+ | awk fournit des variables utiles qui peuvent être utilisées, affichées, calculées ou assignées. | ||
+ | |||
+ | === Variable NR NF === | ||
+ | |||
+ | * NR : nombre d'enregistrements (numéro de ligne). | ||
+ | * NF : nombre de champs (nombre de colonnes). | ||
+ | |||
+ | <code bash> | ||
+ | awk '{ print NR, NF, $0 }' file.txt | ||
+ | 1 3 Nom Genre Age | ||
+ | 2 1 --------------------------------------- | ||
+ | 3 3 CAMILLE M 7 | ||
+ | 4 3 CHLOE F 12 | ||
+ | 5 3 CLARA F 11 | ||
+ | 6 3 CLEMENT M 7 | ||
+ | 7 3 EMMA F 6 | ||
+ | 8 3 THEO M 8</code> | ||
+ | |||
+ | === Variable FS OFS === | ||
+ | |||
+ | * FS : Séparateur de champ (par défaut : espace/tabulation). | ||
+ | * OFS : Séparateur de champ en sortie (par défaut : espace). | ||
+ | <code bash> | ||
+ | awk '/CAMILLE/ { OFS="," ; print $2,$1 }' file.txt | ||
+ | M,CAMILLE</code> | ||
+ | |||
+ | <note>À noter le caractère ";" pour séparer les instructions dans la même ligne et la façon dont on assigne une valeur à une variable (OFS=",").</note> | ||
+ | |||
+ | ==== Scripts awk ==== | ||
+ | |||
+ | 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 | ||
+ | <code bash> | ||
+ | cat > prog.awk | ||
+ | /^CL/,/^E/ { | ||
+ | print NR, $0 | ||
+ | }</code> | ||
+ | |||
+ | Puis interprété grâce à l'option -f : | ||
+ | <code bash> | ||
+ | awk -f prog.awk file.txt | ||
+ | 5 CLARA F 11 | ||
+ | 6 CLEMENT M 7 | ||
+ | 7 EMMA F 6</code> | ||
+ | |||
+ | ==== Titre ==== | ||
+ | |||
+ | //À suivre...// **Jojo** ;-) |