logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

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 → ODT PDF Export

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

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
utilisateurs:hypathie:tutos:awk-vocabulaire [05/08/2014 15:56]
Hypathie [Le fonctionnement discriminatoire d'awk]
utilisateurs:hypathie:tutos:awk-vocabulaire [06/08/2014 09:06]
Hypathie [Utilisation simple et notion de programme awk]
Ligne 245: Ligne 245:
  
 > Le fichier plus petit selon NR d'​abord,​ sinon il affiche les lignes supérieures,​ c'​est-à-dire celles à partir de l'​enregistrement 5 pour chaque fichier ! > Le fichier plus petit selon NR d'​abord,​ sinon il affiche les lignes supérieures,​ c'​est-à-dire celles à partir de l'​enregistrement 5 pour chaque fichier !
 +
 +====Les autres variables prédéfinies ====
 +===Celles en mémoire dès le lancement de la commande ===
 +Voici les variables internes du langage awk présentes en mémoire dès le lancement de la commande.
 +
 +^Variables ^Significations ^Valeurs par défaut ^
 +|ARGC |Nombre d'​arguments de la ligne de commande |- |
 +|ARGV |Tableau des arguments de la ligne de commande|- |
 +|FS |Séparateur de champs en entrée|"​ "|
 +|NF |Nombre de champs de l'​enregistrement courant|-|
 +|OFMT |Format de sortie des nombres|"​%.6g"​|
 +|OFS |Séparateur de champs pour la sortie|"​ "|
 +|ORS |Séparateur d'​enregistrement pour la sortie|"​\n"​|
 +|RLENGTH |Longueur de la chaîne trouvée|-|
 +|RS |Séparateur d'​enregistrement en entrée|"​\n"​|
 +|RSTART |Positionnée par la fonction match :début de la chaîne trouvée|-|
 +|SUBSEP |Séparateur des éléments dans un tableau|"​\034"​|
 +
 +===Celles initialisées lors du traitement d'une ligne ===
 +
 +Les enregistrements sont traités successivement.\\ ​
 +L'​enregistrement est automatiquement découpé en champs et un certain nombre de variables internes awk sont alors initialisées.\\ ​
 +Les voici :
 +
 +^ ^ ^
 +|$0|Valeur de l'​enregistrement courant|
 +|NF |Nombre de champs de l'​enregistrement courant|
 +|$1 $2 ... $NF|$1 : champ n°1\\ $2 champ n°2\\ $NF : valeur du dernier champ|
 +|NR  |Indice de l'​enregistrement courant\\ (NR vaut 1 quand la première ligne est lu, et s'​incrémente à chaque enregistrement.)|
 +|FNR|Indice de l'​enregistrement courant relatif au fichier en cours de traitement|
 +|FILENAME |Nom du fichier en cours de traitement|
 +
 +
 +
  
 ===="​Fichier1"​ "​Fichier2"​ ==== ===="​Fichier1"​ "​Fichier2"​ ====
Ligne 274: Ligne 308:
  
 =====Utilisation simple et notion de "​programme"​ awk===== =====Utilisation simple et notion de "​programme"​ awk=====
-__//​Quand ​le programme ​est explicite//​__+__//​Quand ​un programme explicite ​est ajouté//__
  
   awk '​Programme'​ Fichier-1 Fichier-2 ..... Fichier-n   awk '​Programme'​ Fichier-1 Fichier-2 ..... Fichier-n
Ligne 280: Ligne 314:
 <note tip> <note tip>
 __**Le "​programme"​ :**__ __**Le "​programme"​ :**__
 +
 +Jusqu'​à présent on a vu que **''​Programme''​** pouvait être simplement constitué d'une condition et d'une variable prédéfinie :
 +
 +  awk '​[condition]'​ Fichier-1 Fichier-2 ... Fichier-n
 +
 +La plupart du temps awk est utilisé avec une instruction conditionnée ou non.\\ ​
 +Le programme devient alors :
 +
 +  awk '​[condition]{instruction}'​ Fichier-1 Fichier-2 ... Fichier-n
 +
  
   * Le "​Programme"​ peut aussi être constitué par une ou plusieurs instructions.   * Le "​Programme"​ peut aussi être constitué par une ou plusieurs instructions.
Ligne 285: Ligne 329:
   * Quand il y en a plusieurs, chaque instruction permet une action particulière sur le ou des fichier(s), ou encore sur les données du flux d'​entrée. ​   * Quand il y en a plusieurs, chaque instruction permet une action particulière sur le ou des fichier(s), ou encore sur les données du flux d'​entrée. ​
  
-  *Avec awk, on ne parle pas de commandes internes à awk.\\ Une instruction ​est constituée par des fonctions prédéfinies,​ ou créées par l'​utilisateur.\\ ​+  * Avec awk, on ne parle pas de commandes internes à awk.\\ Une instruction ​peut être constituée par des fonctions prédéfinies,​ ou créées par l'​utilisateur, par des variables prédéfinies ou crées par l'​utilisateur.\\  
 + 
 +  * Chaque instruction du programme peut être [[utilisateurs:​hypathie:​tutos:​awk-vocabulaire?&#​determiner-l-instruction-par-une-condition|conditionnée]].\\ 
  
-  * Chaque fonction porte sur une variable prédéfinie ou créée par l'utilisateur.\\ +  * Il est possible de conditionner les instructions au moyen d'un test "​if-else"​ et maîtriser le déroulement d'une instruction au moyen des boucles "​while"​ et "​for"​.\\  
  
-  * Le programme ainsi constitué de fonction et de variable, peut être [[utilisateurs:​hypathie:​tutos:​awk-vocabulaire?&#​determiner-l-instruction-par-une-condition|conditionné]].\\ ​ 
  
-//La création de fonctions et de variables ​relève ​de l'​utilisation avancée de awk qui, plus qu'une simple commande, est un langage de programmation.//​\\ ​+//La création de fonctions et de variables, ainsi que l'​utilisation des tests et des boucles, relèvent ​de l'​utilisation avancée de awk qui, plus qu'une simple commande, est un langage de programmation.//​\\ ​
 //Cela se fait dans un script awk.//​\\ ​ //Cela se fait dans un script awk.//​\\ ​
    
Ligne 860: Ligne 905:
 **Autrement dit, la //forme// d'une condition est de déterminer l'​action en fonction d'une localisation,​ et cela //a priori// de l'​explicitation de la condition.** **Autrement dit, la //forme// d'une condition est de déterminer l'​action en fonction d'une localisation,​ et cela //a priori// de l'​explicitation de la condition.**
  
-  *  “BEGIN” et “END” font partie des “modèles"​ ; comme les autres “conditions”,​ ils contrôlent l'​exécution des actions.\\ Mais contrairement aux autres ​“patterns, ils ne conditionnent ​pas (ne “matchent” pas)l'​exécution du programme en fonction ​de la correspondance précisée par la condition.\\ ​Ils conditionnent ​le fait que l'​action n'ait lieu qu'une seule fois.\\ ​+  * “BEGIN” et “END” font partie des “modèles"​ ; comme les autres “conditions”,​ ils contrôlent l'​exécution des actions.\\ Mais contrairement aux autres ​modèles, ils ne déterminent ​pas l'​exécution du programme en fonction ​d'​une ​condition ​qui, par correspondance,​ sélectionne une partie du fichier où l'​action opère.\\ __Ils "​modélisent" ​le fait que l'​action n'ait lieu qu'une seule fois en un certain "​lieu"​ qu'ils conditionnent,​ indépendamment du contenu du fichier traité.__\\ 
  
-  *  "​BEGIN" ​et "END" ​s'​utilise en général dans des scripts.\\ Voir [[utilisateurs:​hypathie:​tutos:​awk-vocabulaire?&#​notion-de-programme-awk-et-utilisation-de-scripts-rudimentaires|notion de programme awk et utilisation de script rudimentaire]].+  * BEGIN et END ne se composent pas avec les autres modèles.\\  
 + 
 +  * Ils ne sont pas obligatoires. 
 + 
 +  * Ils s'​utilise en général dans des scripts.\\ Voir [[utilisateurs:​hypathie:​tutos:​awk-vocabulaire?&#​notion-de-programme-awk-et-utilisation-de-scripts-rudimentaires|notion de programme awk et utilisation de script rudimentaire]].
  
 </​note>​ </​note>​
  
 ====BEGIN et END ==== ====BEGIN et END ====
-BEGIN et END ne se composent pas avec les autres modèles.\\ ​ 
-Mais on peut insérer tous les autres modèles (expression relationnelle,​ ER, composée d'ER, intervalle entre BEGIN et END.\\ ​ 
-Ils ne sont pas obligatoires. 
- 
-  '​BEGIN{instructions} critères END{instructions}'​ 
- 
  
 ===Notion de blocs === ===Notion de blocs ===
Ligne 888: Ligne 931:
  
 À ce programme qui est la partie centrale, il est possible d'​ajouter un début (BEGIN) et une fin (END) de programme. À ce programme qui est la partie centrale, il est possible d'​ajouter un début (BEGIN) et une fin (END) de programme.
 +
 +<​code>​
 +BEGIN {
 +    instructions
 +}
 +Condition {
 +    Action
 +  }
 +...
 +Condition {
 +    Action
 +}
 +END {
 +    instructions
 +}
 +
 +</​code>​
 +
  
 <note tip> <note tip>
-  * "Action" : +  * "Le programme central" : 
-Awk rappelle ​le programme de "l'​action" ​(centrale et composée d'une ou plusieurs série(s) de action(s), conditionnée(s) ou non) autant de fois qu'il y a d'​enregistrement(s).\\ ​+Awk rappelle ​les "actions" ​du programme central ​autant de fois qu'il y a d'​enregistrement(s).\\ ​
 Par exemple, appliqué à un fichier de 4 lignes, le programme va être appelé quatre fois((Il y a un ensemble de variables qui permettent d'​accéder à l'​enregistrement (voir plus bas).)).\\ ​ Par exemple, appliqué à un fichier de 4 lignes, le programme va être appelé quatre fois((Il y a un ensemble de variables qui permettent d'​accéder à l'​enregistrement (voir plus bas).)).\\ ​
 À chaque passage, c'est un nouvel enregistrement (une nouvelle ligne) qui est traité. À chaque passage, c'est un nouvel enregistrement (une nouvelle ligne) qui est traité.
  
   * "​BEGIN"​ :   * "​BEGIN"​ :
- 
-  BEGIN { 
-      instructions 
-  } 
- 
 Le bloc "​BEGIN"​ est exécuté une fois au début, __avant__ le traitement des données.\\ ​ Le bloc "​BEGIN"​ est exécuté une fois au début, __avant__ le traitement des données.\\ ​
 Il peut être constitué de plusieurs instructions.\\ ​ Il peut être constitué de plusieurs instructions.\\ ​
  
   * "​END"​ :   * "​END"​ :
- 
-  END { 
-      instructions 
-  } 
  
 Le bloc "​END"​ est exécuté une fois à la fin, __après__ le traitement des données.\\ ​ Le bloc "​END"​ est exécuté une fois à la fin, __après__ le traitement des données.\\ ​
Ligne 964: Ligne 1016:
 </​code>​ </​code>​
  
-===Exemples ​de blocs de début et de fin === +===Exemple ​de blocs de début et de fin ===
  
   *Soit le script "​begin-end.awk"​   *Soit le script "​begin-end.awk"​
utilisateurs/hypathie/tutos/awk-vocabulaire.txt · Dernière modification: 12/08/2014 15:18 par Hypathie

Pied de page des forums

Propulsé par FluxBB