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-synthese [02/08/2014 19:43]
Hypathie [Variables prédéfinies]
utilisateurs:hypathie:tutos:awk-synthese [06/08/2014 08:40] (Version actuelle)
Hypathie [Variables prédéfinies]
Ligne 7: Ligne 7:
 =====Variables prédéfinies===== =====Variables prédéfinies=====
 ===Celles en mémoire dès le lancement de la commande === ===Celles en mémoire dès le lancement de la commande ===
-Voici les variables internes du langage awk présente ​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 ^ ^Variables ^Significations ^Valeurs par défaut ^
Ligne 30: Ligne 30:
 ^ ^ ^ ^ ^ ^
 |$0|Valeur de l'​enregistrement courant| |$0|Valeur de l'​enregistrement courant|
-|FNR |Nombre ​d'enregistrements du fichier|+|NF |Nombre ​de champs de l'enregistrement courant|
 |$1 $2 ... $NF|$1 : champ n°1\\ $2 champ n°2\\ $NF : valeur du dernier champ| |$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.)| |NR  |Indice de l'​enregistrement courant\\ (NR vaut 1 quand la première ligne est lu, et s'​incrémente à chaque enregistrement.)|
Ligne 42: Ligne 42:
  
 ^Opérateurs ​      ​^Significations ​             ^ ^Opérateurs ​      ​^Significations ​             ^
-|**<​nowiki>​==</​nowiki>​** |égale à | +|**<​nowiki>​==</​nowiki>​** |égale à (binaire) ​
-|**<​nowiki>​!=</​nowiki>​** |différent de | +|**<​nowiki>​!=</​nowiki>​** |différent de (binaire)
-|**<​nowiki><​=</​nowiki>​** |inférieur ou égale à | +|**<​nowiki><​=</​nowiki>​** |inférieur ou égale à (binaire) ​
-|**<​nowiki>>​=</​nowiki>​** |supérieur ou égale à | +|**<​nowiki>>​=</​nowiki>​** |supérieur ou égale à (binaire) ​
-|**<​nowiki><</​nowiki>​** |inférieur à | +|**<​nowiki><</​nowiki>​** |inférieur à (binaire)
-|**<​nowiki>></​nowiki>​** |supérieur à | +|**<​nowiki>></​nowiki>​** |supérieur à (binaire)
-|**<​nowiki>​~</​nowiki>​** |correspondance avec ER | +|**<​nowiki>​~</​nowiki>​** |correspondance avec ER (binaire)
-|**<​nowiki>​!~</​nowiki>​** |non-correspondance avec ER |+|**<​nowiki>​!~</​nowiki>​** |non-correspondance avec ER (binaire)|
 |**<​nowiki>​!</​nowiki>​** |négation | |**<​nowiki>​!</​nowiki>​** |négation |
 |**<​nowiki>&&</​nowiki>​** |ET logique | |**<​nowiki>&&</​nowiki>​** |ET logique |
 |**<​nowiki>​||</​nowiki>​** |OU logique | |**<​nowiki>​||</​nowiki>​** |OU logique |
 |**<​nowiki>​(expression)**</​nowiki>​ |regroupement | |**<​nowiki>​(expression)**</​nowiki>​ |regroupement |
 +
 +=====Les fonctions prédéfinies=====
 +
 +===Les fonctions de traitement de chaînes===
 +
 +Les fonctions de traitement de chaînes de caractères proposées par awk sont regroupées dans le tableau suivant :
 +
 +^Nom de la fonction et arguments ^Description du travail effectué ​ ^Valeur renvoyée ^
 +|**Recherche et extraction de sous chaînes** ​                                           |||
 +|substr(s,​p) | Extrait la fin de la chaîne s commençant à la position p | La sous chaîne en question |
 +|substr(s,​p,​n) | Extrait la sous chaîne de s de longueur n et commençant à la position p. Cette fonction est souvent utilisée pour obtenir les n premiers caractères d'une chaîne en fixant p à 1.|La sous chaîne en question.|
 +|index(s,​t)|Recherche la chaîne t dans la chaîne s|La position de la première occurrence de t dans s, 0 si t n'​appartient pas à s|
 +|**Fonctions à usage général** ​                                                             |||
 +|length(s)|Longueur d'une chaîne|Longueur de la chaîne passée en paramètre|
 +|match(s,​r)|Effectue un test de reconnaissance du motif r sur la chaîne s|Si la chaîne s est reconnue par le motif r, la position du premier caractère associé à la reconnaissance est renvoyée.\\ En cas d'​échec,​ la fonction renvoie 0.\\ En outre les variables prédéfinies RSTART et RLENGTH sont respectivement associées à la position du premier caractère de reconnaissance (identique à la valeur de retour) et à la longueur de la partie de s reconnue par le motif r.|
 +|sprintf(format,​...)|Effectue le même travail que la fonction du même nom en C i.e. créée une chaîne sur le modèle format en substituant les caractères spéciaux par les argument à la suite format en suivant le même formalisme que printf | La chaîne issue des substitutions.|
 +|**Fonctions de substitution** ​                                                             |||
 +|sub(r,​s)|Remplace la première occurrence de r par s à l'​intérieur du tampon de travail courant ($0)|Nombre de substitutions effectuées,​ c'est à dire 0 ou 1.|
 +|sub(r,​s,​t)|Remplace la première occurrence de r par s à l'​intérieur de la chaîne t|Nombre de substitutions effectuées,​ c'est à dire 0 ou 1.|
 +|gsub(r,​s)|Remplace toutes les occurrences de r par s à l'​intérieur du tampon de travail courant ($0)|Nombre de substitutions effectuées,​ de 0 à n.|
 +|gsub(r,​s,​t)|Remplace toutes les occurrences de r par s à l'​intérieur de la chaîne t|Nombre de substitutions effectuées,​ de 0 à n.|
 +|**Chaînes et tableaux** ​                                                                  |||
 +|split(s,​tab)|Découpe la chaîne s en champs (respectivement au(x) séparateur(s) indiqués par la variable prédéfinie FS) et place ces derniers dans le tableau tab.|Nombre de champs obtenus|
 +|split(s,​tab,​sep)|Découpe la chaîne s en champs (respectivement au(x) séparateur(s) indiqués par sep) et place ces derniers dans le tableau tab.|Nombre de champs obtenus|
 +
 +Attention aux faux amis ! **substr** ne signifie pas substitution (c'est le travail de sub et gsub) mais «__ extraction de sous chaîne__ ».
 +
 +===Les fonctions arithmétiques===
 +
 +Le langage de programmation awk propose en standard la plupart des fonctions arithmétiques communes.\\ ​
 +Elles sont répertoriées dans le tableau suivant :\\ 
 +
 +^     ​^ ​        ^
 +|atan2(y,​x)|Renvoie l'​angle formé par x et y, soit, grosso modo, l'arc tangente de y/x|
 +|cos(x)|Cosinus de x|
 +|sin(x)|Sinus de x|
 +|log(x)|Logarithme népérien de x|
 +|exp(x)|Exponentielle de x|
 +|sqrt(x)|Racine carrée de x|
 +|int(x)|Partie entière de x|
 +|rand(x)|Génère un nombre pseudo aléatoire x, tel que 0 <=x < 1 |
 +|srand(x)|Fixe la racine du générateur à x|
 +
 +=====Les opérateurs arithmétiques =====
 +
 +^Opérateurs ​                    ​^Signification ​   ^
 +|<​nowiki>​+</​nowiki> ​            | addition ​       |
 +|<​nowiki>​-</​nowiki> ​            | soustraction ​   |
 +|<​nowiki>​*</​nowiki> ​            | multiplication ​ |
 +|<​nowiki>/</​nowiki> ​            | division ​       |
 +|<​nowiki>​%</​nowiki> ​            | modulo ​         |
 +|<​nowiki>​^</​nowiki> ​            | exponentiation ​ |
 +|<​nowiki>​++</​nowiki>​ (unitaire) | incrémentation ​ |
 +|<​nowiki>​- -</​nowiki>​ (unitaire) | décrémentation ​ |
 +|<​nowiki>​+=</​nowiki> ​           | x += y équivaut à x = x + y |
 +|<​nowiki>​- =</​nowiki> ​           |x-=y équivaut à x = x - y|
 +|<​nowiki>​*=</​nowiki> ​           |<​nowiki>​x*=y équivaut à x = x * y</​nowiki>​ |
 +|<​nowiki>/​=</​nowiki> ​           |x/=y équivaut à x = x / y |
 +|<​nowiki>​%=</​nowiki> ​           |x%=y équivaut à x = x % y |
 +|<​nowiki>​^=</​nowiki> ​           |<​nowiki>​x^=y équivaut à x = x ^ y</​nowiki>​ |
 +
 +
 +=====Tableaux récapitulatif des contrôleurs et modificateurs de formats =====
 +
 +====Tableau des contrôleurs de format ====
 +
 +^Contrôleurs de format ^Explications ​ ^Exemples de contenu\\ de la variable $n   ​^Format d'​apparition de la variable ​ ^
 +|%s | Toute chaîne de caractères. | Pour n correspondant à "​toto"​\\ ​ ("​%s",​ $n) | '​toto'​ |
 +|%xs | Exemple, avec modificateur de format | Pour n correspondant à "​toto"​\\ ("​%10s",​ $n)| ' toto' |
 +|%xs | Autre exemple, avec modificateur de format | Pour n correspondant à "​toto"​\\ ("​%.s",​ $n) | '​tot'​ |
 +|%c | Imprime un nombre comme un caractère ASCII. | Pour n correspondant à 65\\ ("​%c",​ $n)\\ Pour n correspond à 83\\ ("​%c",​ $n) | la lettre '​A'​\\ la lettre '​s'​ |
 +|%d | La partie entière d'un nombre décimal | Pour n=18.5\\ ("​%d",​ $n) | '​18'​ |
 +|%xd | Exemple avec modificateur de format\\ Précision du nombre de chiffres | Pour n=18.5\\ ("​%5d",​ $n) | '​18'​ |
 +|% i | Équivalents de%d : Tous deux imprime un entier décimal.\\ Le% i est pour la compatibilité avec ISO C |||
 +|%e | Nombre réel sous la forme <​nowiki>​[-]d.ddddddE[+/​-]dd</​nowiki>​ | Pour n=83,5\\ ("​%e",​ $n) | '​8.350000e+01'​ |
 +|%f | Nombre réel sous la forme <​nowiki>​[-]ddd.dddddd.</​nowiki>​ | Pour n=83,5\\ ("​%e",​ $n) | '​83.500000'​ |
 +|%g | Le plus court entre e et f avec suppression des zéros. | Pour n=83,5\\ ("​%g",​ $n) | '​83,​5'​ |
 +|%o | Nombre octal non signé. | Pour n=83,5\\ ("​%g",​ $n) | '​123'​ |
 +|%x | Nombre hexadécimal non signé. | Pour n=83,5\\ ("​%g",​ $n) |'​53'​|
 +|%% | Écriture d'un % si aucun argument n'est présent |||
 +
 +
 +====Tableau des principaux modificateurs de contrôleur ====
 +
 +^Modificateurs ​  ​^Significations ^
 +|n largeur | Il s'agit d'un numéro spécifiant la largeur minimale souhaitée d'un champ.\\ On la place ainsi ''​%nContrôleur''​ |
 +|période\\ . (point) ou n\\ avec pour n une valeur numérique | Suivie d'une constante entière, une période indique la précision à utiliser lors de l'​impression.\\ Le sens de la précision varie selon le contrôleur. |
 +|%.e  , %.f |aucun chiffre à droite de la virgule décimale. |
 +|%ng | n nombre(s) maximum de chiffre(s) significatif(s) |
 +|%nd , %ni , %no , %nx | n nombre(s) minimum de chiffre(s) à imprimer.|
 +|%ns | n nombre(s) maximum de caractère(s) (pour une chaîne) à imprimer. |
 +|- | Le signe moins, utilisés avant le modificateur de '​largeur',​ permet de justifier à gauche. |
 +| espace | Pour les conversions numériques,​ précéder les valeurs positives d'un espace\\ et des valeurs négatives avec un signe moins. |
 +|+ | Le signe plus, utilisé avant le largeur modificateur de '​largeur',​\\ dit de toujours fournir un signe pour les conversions numériques,​\\ même si les données du format sont positives.\\ Le '​+'​ l'​emporte sur le modificateur de l'​espace.|
 +| 0 | Un leader '​0'​ (zéro) agit comme un drapeau qui indique que la sortie devrait être complétée par des zéros au lieu d'​espaces.\\ Cela s'​applique même aux formats de sortie non numériques. |
 +|# | Utilisez une "autre forme" pour certaines lettres de commande. |
  
  
  
utilisateurs/hypathie/tutos/awk-synthese.1407001417.txt.gz · Dernière modification: 02/08/2014 19:43 par Hypathie

Pied de page des forums

Propulsé par FluxBB