Outils pour utilisateurs

Outils du site


informatique:awk

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édentesRévision précédente
Prochaine révision
Révision précédente
Prochaine révisionLes deux révisions suivantes
informatique:awk [2020/07/02 23:56] alexisinformatique:awk [2020/11/26 13:35] – [Remplacer le séparateur d'un fichier] alexis
Ligne 2: Ligne 2:
  
 ===== Variables ===== ===== Variables =====
-  * NR : nombre d'enregistrements lus + 
-  FNR nombre d'enregistrements lus dans le fichier courant +=== FILENAME — nom du fichier courant === 
-  * FILENAME : nom du fichier courant +La variable ''FILENAME'' contient le nom du fichier courant. 
-  FS séparateur de champs en entrée +<code bash> 
-  OFS séparateur de champs en sortie+awk '{print FILENAME}' <fichier> 
 +</code> 
 + 
 +=== FNR — nombre d'enregistrements lus dans le fichier courant === 
 +La variable ''FNR'' contient le nombre d'enregistrements lus dans le fichier courant. 
 +Le compteur d'enregistrements s'initialise entre chaque fichier. 
 +<code bash> 
 +awk '{print FNR}' <fichier1> <fichier2> 
 +</code> 
 + 
 +=== FS — Séparateur de champs === 
 +La variable ''FS'' est utilisée pour changer la valeur du séparateur de champs. 
 +Par défaut, l'espace et la tabulation sont utilisés. 
 +<code bash> 
 +# Initialisation de la variable dans la liste de commande 
 +awk 'BEGIN { FS="=" } { print $1 }' <fichier> 
 + 
 +# Initialisation de la variable par l'option du programme 
 +awk -F'=' '{print $1}' <fichier> 
 +</code> 
 + 
 +<WRAP info> 
 +Le séparateur de champ peut être une expression rationnelle. 
 +<code bash> 
 +# Initialisation de la variable dans la liste de commande 
 +awk 'BEGIN { FS="[=_]" } { print $1 }' <fichier> 
 + 
 +# Initialisation de la variable par l'option du programme 
 +awk -F'[=_]' '{print $1}' <fichier> 
 +</code> 
 +</WRAP> 
 + 
 + 
 +=== NF — Nombre de champs === 
 +La variable ''NF'' contient le nombre de champs de l'enregistrement courant. 
 +<code bash> 
 +awk '{print NF}' <fichier> 
 +</code> 
 + 
 +=== NR — Nombre d'enregistrements lus === 
 +La variable ''NR'' contient le nombre total d'enregistrements lus. 
 +Le compteur d'enregistrements ne s'initialise pas entre chaque fichier. 
 +<code bash> 
 +awk '{print NR}' <fichier1> <fichier2> 
 +</code> 
 + 
 +=== OFS — Séparateur de champs de la sortie === 
 +La variable ''OFS'' est utilisée pour changer la valeur du séparateur de champs de la sortie
 +Par défaut, l'espace est utilisée. 
 +<code bash> 
 +awk 'BEGIN { OFS=":" } { print $1 }' <fichier> 
 +</code>
  
 ===== Scripts ===== ===== Scripts =====
Ligne 85: Ligne 136:
 39242 39242
 </code> </code>
 +
 +==== Afficher le dernier champ de chaque ligne ====
 +En faisant astucieusement usage de la variable ''NF'' ((Astuce trouvée sur [[https://unix.stackexchange.com/questions/145672/print-last-element-of-each-row/145673#145673|Unix & Linux Stack Exchange]]
 +))
 +<code bash>
 +awk '{print $NF}' <fichier>
 +</code>
 +
 +==== Remplacer le séparateur d'un fichier ====
 +En assignant la variable ''$1'' à ''$1'', cela modifie la valeur du champ ce qui force ''awk'' à reconstruire l'enregistrement ''$0''.
 +La reconstruction de l'enregistrement remplace le séparateur ''FS'' par ''OFS''.
 +<code bash>
 +# Ici, 1 équivaut à true, ce qui affiche la ligne complète
 +awk 'BEGIN { FS=","; OFS="|" } { $1=$1 } 1' <fichier>
 +
 +# Cette écriture est donc équivalente
 +awk 'BEGIN { FS=","; OFS="|" } { $1=$1; print $0 }' <fichier>
 +</code>
 +
 ===== Liens ===== ===== Liens =====
   * [[http://www.math.utah.edu/docs/info/gawk_toc.html|AWK Language Programming]]   * [[http://www.math.utah.edu/docs/info/gawk_toc.html|AWK Language Programming]]
informatique/awk.txt · Dernière modification : 2023/01/04 20:46 de alexis