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
utilisateurs:hypathie:tutos:awk-vocabulaire [06/08/2014 08:44]
Hypathie [Utilisation simple et notion de programme awk]
utilisateurs:hypathie:tutos:awk-vocabulaire [12/08/2014 15:18] (Version actuelle)
Hypathie [Déterminer l'instruction par une condition]
Ligne 314: 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 319: 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 641: Ligne 652:
 =====Déterminer l'​instruction par une condition ===== =====Déterminer l'​instruction par une condition =====
 <note tip> <note tip>
-__Un programme awk se présente toujours ​ainsi__ ​:+__Il a été vu__ : 
 + 
 +  * qu'​un ​programme awk se présente toujours ​ainsi :
  
 <​code>​ <​code>​
Ligne 649: Ligne 662:
 </​code>​ </​code>​
  
-  * Une **''​condition''​** porte exclusivement sur une ligne du fichier d’entrée s'il en est précisé un, ou sur l’entrée standard (stdin), si aucun fichier n’est indiqué.+  * qu'​une ​**''​condition''​** porte exclusivement sur une ligne du fichier d’entrée s'il en est précisé un, ou sur l’entrée standard (stdin), si aucun fichier n’est indiqué.
  
-  * Une action ne s’exécutera que si la condition est validée.+  * qu'​une ​action ne s’exécutera que si la condition est validée.
  
-  * Il y a différents ​modèles ​de "​condition"​+  * à ces sujets, quelques types de condition. 
 + 
 +__Mais il y a différentes types de conditions__.  
 + 
 +  * On désigne ces différents ​types de condition ​de "**modèles de condition**"
 +  * Il y a quatre sorte de modèles de condition
  
 ^ ^ ^ ^ ^ ^
Ligne 663: Ligne 681:
 |intervalle | NR==5,​NR==10 |match les lignes de 5 à 10 | |intervalle | NR==5,​NR==10 |match les lignes de 5 à 10 |
  
 +  * Tous ces modèles, bien que distingués les uns des autres, ont une //forme// en commun : qu'​elle est-elle ; qu'​est-ce qui fait que chacun "​modèle de condition"​ est condition ?
 </​note>​ </​note>​
  
Ligne 746: Ligne 764:
 ===Une ER en correspondance comme condition === ===Une ER en correspondance comme condition ===
 <code user> <code user>
-awk '$1 ~ /[:aplha:]*/{print NR,​$1,​$2,​$3,​$4,​$5,​$6,​$7}'​ fichier-awk.txt+awk '$1 ~ /[[:alpha:]]*/{print NR,​$1,​$2,​$3,​$4,​$5,​$6,​$7}'​ fichier-awk.txt
 </​code>​ </​code>​
  
 >Ici la condition est :  **''​ '$1 ~ /<​nowiki>​[:​aplha:​]</​nowiki>​*/​ ''​** . >Ici la condition est :  **''​ '$1 ~ /<​nowiki>​[:​aplha:​]</​nowiki>​*/​ ''​** .
 > Elle est constituée par l'​équivalence (**''​~''​**) entre le champ 1 ($1) et une expression rationnelles :  > Elle est constituée par l'​équivalence (**''​~''​**) entre le champ 1 ($1) et une expression rationnelles : 
-> la classe **''<​nowiki>​[:​alpha:​]</​nowiki>''​** (minuscule ou majuscule), zéro ou plusieurs fois (**''​*''​**).+> la classe **''<​nowiki>​[[:alpha:]]</​nowiki>''​** (minuscule ou majuscule), zéro ou plusieurs fois (**''​*''​**).
 > //(Les expressions rationnelles sont entourées de slashs : /ER/)// > //(Les expressions rationnelles sont entourées de slashs : /ER/)//
  
Ligne 894: Ligne 912:
 **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 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” 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, ​détermine l'​action relativement à une partie du fichier.\\ __Ils sont "condition" ​dans le sens où ils "​modélisent"​ l'​action. Cette modalité impose ​que l'​action n'ait lieu qu'une seule fois, et que le résultat de cette action s'​affiche ​en lieu particulier par rapport au résultat de l'ensemble ​du programme.__\\ 
  
   * BEGIN et END ne se composent pas avec les autres modèles.\\ ​   * BEGIN et END ne se composent pas avec les autres modèles.\\ ​
utilisateurs/hypathie/tutos/awk-vocabulaire.1407307450.txt.gz · Dernière modification: 06/08/2014 08:44 par Hypathie

Pied de page des forums

Propulsé par FluxBB