Table des matières

awk-synthèse

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 :

$0Valeur 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.)
FNRIndice de l'enregistrement courant relatif au fichier en cours de traitement
FILENAME Nom du fichier en cours de traitement

Opérateurs de tests

Les opérateurs de tests

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

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
+ 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

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 [-]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

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.