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 [05/08/2014 14:12]
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 72: Ligne 72:
 <code nom fichier2-awk.txt>​ <code nom fichier2-awk.txt>​
 abricot fraise pomme abricot fraise pomme
-tintin mario cendrillon ulysse ​chadoc+tintin mario cendrillon ulysse ​shadok
 27 fleurs 27 fleurs
 Hélène-Fleur Hélène-Fleur
Ligne 144: Ligne 144:
 <​code>​ <​code>​
 abricot fraise pomme abricot fraise pomme
-tintin mario cendrillon ulysse ​chadoc+tintin mario cendrillon ulysse ​shadok
 27 fleurs 27 fleurs
 Hélène-Fleur Hélène-Fleur
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 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 607: 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 615: 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. 
 + 
 +  * à 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 
 + 
 +^ ^ ^ 
 +|BEGIN | BEGIN |avant que toute entrée soit lue | 
 +|END | END | après que toute entrée soit lue| 
 +|expression relationnelle | NF>5 | matche les lignes où le nombre de champ est supérieur à 5 | 
 +|expression régulière (ER) | /$1 ~ /​[:​aplha:​]*/​ |matche les lignes dont la chaîne du champ 1 correspond à minuscule ou majuscule, zéro ou plusieurs fois | 
 +|composé d'ER | NF>5 && /I/ |match les lignes contenant plus de 5 champs et contenant le caractère I | 
 +|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 699: 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 ​**[[utilisateurs:​hypathie:​tutos:​awk-vocabulaire#​determiner-l-instruction-par-une-condition|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 840: Ligne 905:
 </​code>​ </​code>​
  
-Excepté pour la condition de type chaîne, toutes les autres déterminent un "​lieu"​ précis pour lequel la condition doit être remplie.\\  +<note tip>
-Il n'y aurait par exemple aucun sens à ce que awk exécute un programme à condition d'un calcul juste en lui-même.\\  +
-**Autrement dit, la forme de condition détermine une localisation,​ //a priori// de l'​explicitation de la condition.**+
  
-=====Détail : ligne de commandes shell et awk =====+  *Excepté pour la condition ​de type "​chaîne"​((prenant pour lieu tout le fichier)), toutes les autres conditions explicitées jusqu'​ici,​ déterminent un “lieu” précis pour lequel la condition doit être remplie.\\ Il n'y aurait par exemple aucun sens à ce que awk exécute un programme à condition d'un calcul juste en lui-même.\\ ​
  
-===Utilisation du pipe=== 
-Comme toutes commandes, awk peut traiter la sortie d'un pipe. 
  
-  ​Soit la variable suivante :+**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.**
  
-<code user>​ligne="mot1 mot2 mot3"</​code>​+  * “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.__\\ ​
  
-  * Exemple 1 +  * BEGIN et END ne se composent pas avec les autres modèles.\\  
-<code user+ 
-echo $ligne | awk -F " " ​'{print $1}'+  * 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
 + 
 +====BEGIN et END ==== 
 + 
 +===Notion de blocs === 
 +Jusque là, seul des programmes simples (une seule paire d'accolades composée d'une ou plusieurs instructions) ont été abordés.\\  
 +Il est possible d'​enchaîner plusieurs séries de programme comme ceci :  
 +<​code>​ 
 +Condition ​{ 
 +    Action 
 +  } 
 +... 
 +Condition { 
 +    Action 
 +}
 </​code>​ </​code>​
  
-<​code>​mot1</​code>​+À 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> 
 +  * "Le programme central"​ : 
 +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).)).\\  
 +À chaque passage, c'est un nouvel enregistrement (une nouvelle ligne) qui est traité. 
 + 
 +  * "​BEGIN"​ : 
 +Le bloc "​BEGIN"​ est exécuté une fois au début, __avant__ le traitement des données.\\  
 +Il peut être constitué de plusieurs instructions.\\  
 + 
 +  * "​END"​ : 
 + 
 +Le bloc "​END"​ est exécuté une fois à la fin, __après__ le traitement des données.\\  
 +Il peut aussi être constitué de plusieurs instructions.\\  
 + 
 +Le bloc "​END"​ permet aussi d'​afficher des résultats du programme central.\\  
 + 
 +</​note>​ 
 + 
 +===BEGIN === 
 + 
 +  * Il peut être utiliser uniquement pour définir le séparateur. 
 +Par exemple dans ce cas, BEGIN est obligatoire pour que le séparateur spécifié soit pris en compte avant la lecture du fichier.\\ ​
  
-  * Exemple 2 : 
 <code user> <code user>
-echo $ligne|awk -" ​" '{print $1 $2}'+awk 'BEGIN {FS = "(-|/)" ​}; {print $5}' ​fichier2-awk.txt 
 +</​code>​ 
 +<​code>​ 
 +01: 
 +02: 
 +03:
 </​code>​ </​code>​
-<​code>​mot1mot2</​code>​ 
  
-  * Exemple 3 :+  * Sans le BEGIN : 
 <code user> <code user>
-echo $ligne|awk -" ​" '{print $0}'+awk '{FS = "(-|/)" ​}; {print $5}' ​fichier2-awk.txt
 </​code>​ </​code>​
-<code>​mot1 mot2 mot3</code>+<​code>​
  
-===Redirections d'​entrée et de sortie === 
  
-  * On peut passer à awk le fichier à traiter avec **''<''​** :+02: 
 +03: 
 +</​code>​ 
 + 
 +  ​*Si plusieurs BEGIN apparaissent,​ ils sont exécutés dans l'ordre où ils apparaissent. 
 +<code bash> 
 +BEGIN { 
 +FS = "​(-|/​)"​ 
 +
 +BEGIN { 
 +print "​deuxième BEGIN exécuté aussi avant le premier enregistrement"​ 
 +
 +{print $5} 
 +</​code>​
  
 <code user> <code user>
-awk -F ':'​ '{ print $1 " est " $5 }' ​< /etc/passwd+awk -f begin-end1.awk fichier2-awk.txt 
 +</code> 
 +<​code>​ 
 +deuxième BEGIN exécuté aussi avant le premier enregistrement 
 +01: 
 +02: 
 +03:
 </​code>​ </​code>​
  
-  * équivalent ​de :+===Exemple ​de blocs de début et de fin ===
  
-<​code ​user+  *Soit le script "​begin-end.awk"​ 
-awk -F ':' '{ print $1 " ​est " ​$5 }' /etc/passwd+<​code ​bash
 +#!/usr/bin/awk -
 +BEGIN{ 
 +print "​Élèves très bons en math :
 +print ""​ 
 +
 +$4 > 15 {print $1
 +END{ 
 +print "Il y a " ​FNR " élèves bons en maths" ; print "Bon résultats"​ 
 +}
 </​code>​ </​code>​
  
-  * on peut rediriger ​la sortie de awk vers un fichier ​:+> Le programme central est ici la ligne ''​$4 > 15 {print $1}'',​ 
 +>​encadré par instructions de "​BEGIN"​ et de "​END"​. 
 <code user> <code user>
-awk '{ print $1 ": moyenne math => " $4 }' ​fichier-awk.txt > Fichier1-sortie+./​begin-end.awk fichier-awk.txt 
 +</code> 
 +<​code>​ 
 +Élèves très bons en math : 
 + 
 +Natanaël 
 +Alexis 
 +Hélène-Fleur 
 +Il y a 6 élèves bons en maths 
 +Bons résultats
 </​code>​ </​code>​
  
Ligne 1153: Ligne 1316:
  
  
-=====Notion de blocs ===== 
-Jusque là, seul des programmes simples (une seule paire d'​accolades composée d'une ou plusieurs instructions) ont été abordés.\\ ​ 
-Il est possible d'​enchaîner plusieurs séries de programme comme ceci :  
-<​code>​ 
-Condition { 
-    Action 
-  } 
-... 
-Condition { 
-    Action 
-} 
-</​code>​ 
- 
-À ce programme qui est la partie centrale, il est possible d'​ajouter un début (BEGIN) et une fin (END) de programme. 
- 
-====Définition de blocs ==== 
- 
-<note tip> 
-  * "​Action"​ : 
-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).\\ ​ 
-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é. 
- 
-  * "​BEGIN"​ : 
- 
-  BEGIN { 
-      instructions 
-  } 
- 
-Le bloc "​BEGIN"​ est exécuté une fois au début, __avant__ le traitement des données.\\ ​ 
-Il peut être constitué de plusieurs instructions.\\ ​ 
- 
-  * "​END"​ : 
- 
-  END { 
-      instructions 
-  } 
- 
-Le bloc "​END"​ est exécuté une fois à la fin, __après__ le traitement des données.\\ ​ 
-Il peut aussi être constitué de plusieurs instructions.\\ ​ 
- 
-Le bloc "​END"​ permet aussi d'​afficher des résultats du programme central.\\ ​ 
- 
- 
-**En fait, "​BEGIN"​ et "​END"​ sont des "​patterns"​ particuliers**.\\ ​ 
- 
-En effet, lors des usages simples, il a été vu [[utilisateurs:​hypathie:​tutos:​awk-vocabulaire#​determiner-l-instruction-par-une-condition|quelques exemples de conditions simples]] qui déterminent une ou plusieurs actions affiliées à cette condition.\\ ​ 
-Mais avec awk, il y a **plusieurs types de condition**. __Ces types de condition sont appelés **"​modèles"​** ou **"​patterns"​** (en anglais)__.\\ ​ 
- 
-"​BEGIN"​ et "​END"​ font donc partie des "​modèles ou patterns"​ ; comme les autres "​patterns",​ ils contrôlent l'​exécution des actions.\\ ​ 
-Mais contrairement aux autres "​patterns,​ ils ne conditionnent pas (ne "​matchent"​ pas une ou plusieurs lignes d'​entrée),​ mais conditionnent le fait que l'​action n'ait lieu qu'une seule fois.\\ ​ 
-  
- 
-Voir ci-dessous : Les modèles ("​patterns"​) 
-</​note>​ 
- 
-====Les modèles ("​patterns"​) ==== 
-Les [[utilisateurs:​hypathie:​tutos:​awk-vocabulaire#​determiner-l-instruction-par-une-condition|conditions simples]] sont basées sur certains genres de "​Modèles"​.\\ ​ 
-Il y a quatre genres de modèles. 
- 
-^ ^ ^ 
-|BEGIN | BEGIN |avant que toute entrée soit lue | 
-|END | END | après que toute entrée soit lue| 
-|expression relationnelle | NF>5 | matche les lignes où le nombre de champ est supérieur à 5 | 
-|expression régulière (ER) | /$1 ~ /​[:​aplha:​]*/​ |matche les lignes dont la chaîne du champ 1 correspond à minuscule ou majuscule, zéro ou plusieurs fois | 
-|composé d'ER | NF>5 && /I/ |match les lignes contenant plus de 5 champs et contenant le caractère I | 
-|intervalle | NR==5,​NR==10 |match les lignes de 5 à 10 | 
- 
-====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}'​ 
- 
-===Exemple === 
-  *Soit le script "​begin-end.awk"​ 
-<code bash> 
-#​!/​usr/​bin/​awk -f 
-BEGIN{ 
-print "​Élèves très bons en math :" 
-print ""​ 
-} 
-$4 > 15 {print $1} 
-END{ 
-print "Il y a " FNR " élèves bons en maths" ; print "Bon résultats"​ 
-} 
-</​code>​ 
- 
-> Le programme central est ici la ligne : ''​$4 > 15 {print $1}'',​ 
->​encadré par instructions de "​BEGIN"​ et de "​END"​. 
- 
-<code user> 
-./​begin-end.awk fichier-awk.txt 
-</​code>​ 
-<​code>​ 
-Élèves très bons en math : 
- 
-Natanaël 
-Alexis 
-Hélène-Fleur 
-Il y a 6 élèves bons en maths 
-Bons résultats 
-</​code>​ 
- 
- 
-===BEGIN === 
- 
-  * Il peut être utiliser uniquement pour définir le séparateur. 
-Par exemple dans ce cas, BEGIN est obligatoire pour que le séparateur spécifié soit pris en compte avant la lecture du fichier.\\ ​ 
- 
-<code user> 
-awk 'BEGIN {FS = "​(-|/​)"​ }; {print $5}' fichier2-awk.txt 
-</​code>​ 
-<​code>​ 
-01: 
-02: 
-03: 
-</​code>​ 
- 
-Sans le BEGIN : 
- 
-<code user> 
-awk '{FS = "​(-|/​)"​ }; {print $5}' fichier2-awk.txt 
-</​code>​ 
-<​code>​ 
- 
- 
-02: 
-03: 
-</​code>​ 
- 
-  *Si plusieurs BEGIN apparaissent,​ ils sont exécutés dans l'​ordre où ils apparaissent. 
-<code bash> 
-BEGIN { 
-FS = "​(-|/​)"​ 
-} 
-BEGIN { 
-print "​deuxième BEGIN exécuté aussi avant le premier enregistrement"​ 
-} 
-{print $5} 
-</​code>​ 
- 
-<code user> 
-awk -f begin-end1.awk fichier2-awk.txt 
-</​code>​ 
-<​code>​ 
-deuxième BEGIN exécuté aussi avant le premier enregistrement 
-01: 
-02: 
-03: 
-</​code>​ 
  
utilisateurs/hypathie/tutos/awk-vocabulaire.1407240745.txt.gz · Dernière modification: 05/08/2014 14:12 par Hypathie

Pied de page des forums

Propulsé par FluxBB