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” |
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 |
Opérateurs | Significations |
---|---|
== | égale à (binaire) |
!= | différent de (binaire) |
<= | inférieur ou égale à (binaire) |
>= | supérieur ou égale à (binaire) |
< | inférieur à (binaire) |
> | supérieur à (binaire) |
~ | correspondance avec ER (binaire) |
!~ | non-correspondance avec ER (binaire) |
! | négation |
&& | ET logique |
|| | OU logique |
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 |
Opérateurs | Signification |
---|---|
+ | addition |
- | soustraction |
* | multiplication |
/ | division |
% | modulo |
^ | exponentiation |
++ (unitaire) | incrémentation |
- - (unitaire) | décrémentation |
+= | x += y équivaut à x = x + y |
- = | x-=y équivaut à x = x - y |
*= | x*=y équivaut à x = x * y |
/= | x/=y équivaut à x = x / y |
%= | x%=y équivaut à x = x % y |
^= | x^=y équivaut à x = x ^ y |
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 [-]d.ddddddE[+/-]dd | Pour n=83,5 (“%e”, $n) | '8.350000e+01' |
%f | Nombre réel sous la forme [-]ddd.dddddd. | 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 |
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. |