informatique:awk
Différences
Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
informatique:awk [2015/01/27 08:41] – créée alexis | informatique:awk [2023/01/04 20:46] (Version actuelle) – [Remplacer le séparateur d'un fichier] alexis | ||
---|---|---|---|
Ligne 2: | Ligne 2: | ||
===== Variables ===== | ===== Variables ===== | ||
- | * NR : c'est le nombre d' | + | |
- | | + | === FILENAME — nom du fichier courant === |
- | * FILENAME : c' | + | La variable |
+ | <WRAP prewrap> | ||
+ | <code bash> | ||
+ | awk ' | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | === FNR — nombre d' | ||
+ | La variable '' | ||
+ | Le compteur d' | ||
+ | <WRAP prewrap> | ||
+ | <code bash> | ||
+ | awk ' | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | === FS — Séparateur de champs === | ||
+ | La variable '' | ||
+ | Par défaut, l' | ||
+ | <WRAP prewrap> | ||
+ | <code bash> | ||
+ | # Initialisation de la variable dans la liste de commande | ||
+ | awk 'BEGIN { FS=" | ||
+ | |||
+ | # Initialisation de la variable par l' | ||
+ | awk -F' | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | <WRAP info> | ||
+ | Le séparateur de champ peut être une expression rationnelle. | ||
+ | <WRAP prewrap> | ||
+ | <code bash> | ||
+ | # Initialisation de la variable dans la liste de commande | ||
+ | awk 'BEGIN { FS=" | ||
+ | |||
+ | # Initialisation de la variable par l' | ||
+ | awk -F' | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | === NF — Nombre de champs === | ||
+ | La variable '' | ||
+ | <WRAP prewrap> | ||
+ | <code bash> | ||
+ | awk ' | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | === NR — Nombre d' | ||
+ | La variable '' | ||
+ | Le compteur d' | ||
+ | <WRAP prewrap> | ||
+ | <code bash> | ||
+ | awk ' | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | === OFS — Séparateur de champs de la sortie === | ||
+ | La variable '' | ||
+ | Par défaut, l' | ||
+ | <WRAP prewrap> | ||
+ | <code bash> | ||
+ | awk 'BEGIN { OFS=":" | ||
+ | </ | ||
+ | </ | ||
===== Scripts ===== | ===== Scripts ===== | ||
==== Remplacer les clefs par les valeurs ==== | ==== Remplacer les clefs par les valeurs ==== | ||
+ | <WRAP prewrap> | ||
+ | <code awk> | ||
+ | # fichier_1 contient l' | ||
+ | # A 10 | ||
+ | # B 30 | ||
+ | # C 20 | ||
+ | # fichier_2 contient les données à transformer : | ||
+ | # ID1 A | ||
+ | # ID2 A | ||
+ | # ID3 C | ||
+ | # ID4 B | ||
+ | |||
+ | awk ' | ||
+ | |||
+ | # La sortie de la commande donnera le résultat suivant : | ||
+ | # ID1 10 | ||
+ | # ID2 10 | ||
+ | # ID3 20 | ||
+ | # ID4 30 | ||
+ | </ | ||
+ | </ | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | ==== Afficher la date courante ==== | ||
+ | <WRAP prewrap> | ||
+ | <code awk> | ||
+ | awk '{ "date +%d-%b-%Y" | ||
+ | </ | ||
+ | </ | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | ==== Afficher toutes les trois lignes d'un fichier ==== | ||
+ | * En commençant à la première ligne | ||
+ | <WRAP prewrap> | ||
+ | <code awk> | ||
+ | awk '(NR%3 == 1){print $0}' | ||
+ | </ | ||
+ | </ | ||
+ | * En commençant à la deuxième ligne | ||
+ | <WRAP prewrap> | ||
+ | <code awk> | ||
+ | awk '(NR%3 == 2){print $0}' | ||
+ | </ | ||
+ | </ | ||
+ | * En commençant à la troisième ligne | ||
+ | <WRAP prewrap> | ||
+ | <code awk> | ||
+ | awk '(NR%3 == 0){print $0}' | ||
+ | |||
+ | # Syntaxe alternative | ||
+ | awk ' | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ==== Faire des statistiques d' | ||
+ | |||
+ | Dans le journal des évènements d'une API contenant la liste des URI appelées, je veux compter les types d' | ||
+ | <WRAP prewrap> | ||
+ | <code bash> | ||
+ | # trouver le nombre d' | ||
+ | cat / | ||
+ | |||
+ | # Résultat obtenu | ||
+ | 440 credit_notes | ||
+ | 7 deposits | ||
+ | 3 direct_debit_batches | ||
+ | 909 incidents | ||
+ | 26378 invoices | ||
+ | 78 operations | ||
+ | 11201 payments | ||
+ | 145 refunds | ||
+ | 81 safe_deposits | ||
+ | |||
+ | # Trouver le nombre d' | ||
+ | cat / | ||
+ | # Mais c'est beaucoup plus simple d' | ||
+ | wc -l / | ||
+ | |||
+ | # Résultat obtenu | ||
+ | 39242 | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ==== Afficher le dernier champ de chaque ligne ==== | ||
+ | En faisant astucieusement usage de la variable '' | ||
+ | )) | ||
+ | <WRAP prewrap> | ||
+ | <code bash> | ||
+ | awk ' | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ==== Remplacer le séparateur d'un fichier ==== | ||
+ | En assignant la variable '' | ||
+ | La reconstruction de l' | ||
+ | <WRAP prewrap> | ||
+ | <code bash> | ||
+ | # Ici, 1 équivaut à true, ce qui affiche la ligne complète | ||
+ | awk 'BEGIN { FS=","; | ||
+ | |||
+ | # Cette écriture est donc équivalente | ||
+ | awk 'BEGIN { FS=","; | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ==== Calculer la somme des champs d'un fichier ==== | ||
+ | <code bash> | ||
+ | awk '{ somme += $1 } END { print somme }' < | ||
+ | </ | ||
+ | ===== Liens ===== | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
informatique/awk.1422376881.txt.gz · Dernière modification : 2015/01/27 08:41 de alexis