Accueil
Accueil
Le
Club
Delphi
Kylix
C
C++
Java
J2EE
DotNET
& C#
Visual
Basic
Access
Pascal
Dev
Web
PHP
ASP
XML
UML
SQL
SGBD
Win
Linux
Autres

Tutoriel awk

Date de publication : 10/01/2005

Date de mise a jour :




IV. Les opérateurs
IV-1. Les opérateurs de comparaisons
IV-2. Les opérateurs logiques
IV-3. Les opérateurs arithmétiques
IV-4. Exemples


IV. Les opérateurs


IV-1. Les opérateurs de comparaisons

Ces opérateurs servent dans les conditions (ou structures de contrôles) pour comparer les valeurs numériques ou des chaînes de caractères. Il n'y a pas de différences d'opérateurs pour ces comparaisons. Awk fera la comparaison selon le contexte.

Opérateur Signification
== égale à
!= différent de
<= inférieur ou égale à
>= supérieur ou égale à
< inférieur à
> supérieur à
Ces opérateurs peuvent être employés avec des variables.
Pour comparer le contenu d'une variable avec une chaîne fixe, cette chaîne doit être placée entre guillemet contrairement aux valeurs numériques qui n'ont pas besoin de guillemet :

$2 == "Hello" NR > 2 nb_person >= 4
Ces comparaisons vont pouvoir être liées par des opérateurs dits logiques.


IV-2. Les opérateurs logiques

Opérateur Signification
&& Le ET-Logique
|| Le OU-Logique
! La Négation
Les deux premiers opérateurs vont permettre d'enchaîner les comparaisons. Le && va tester la comparaison suivante si la première est vérifiée :

NR > 1 && NR < 20
Dans cette exemple, la condition est vérifiée si la ligne d'enregistrement est supérieure à 1 ET inférieure à 20. Mais si une des deux comparaison est faussée alors la condition n'est pas vérifiée.
Contrairement au ET-Logique, le || va tester la condition suivante si et seulement si, la comparaison précédente n'est pas vérifiée :

NR == 6 || NR == 20
La condition est vérifiée si la ligne d'enregistrement est la 6 OU la 20.
Vous pouviez associer des comparaisons grâce aux parenthèses :

( NR >= 1 && NR < 20 ) || NR == 34
La comparaison à droite || sera testée si la comparaison (totalité) entre parenthèses n'est verifiée.
Enfin, l'opérateur de négation va définir comme vraie, le contraire de la comparaison (ou d'un ensemble de comparaisons entre parenthèses) :

!( NR >= 1 && NR < 20 )
La condition sera donc vrai pour les enregistrements qui ne sont pas supérieurs à 1 et inférieurs à 20.
Lors de ces comparaisons, il sera possible d'utiliser des opérateurs arithmétiques.


IV-3. Les opérateurs arithmétiques

Opérateur Signification
+ Addition
- Soustraction
* Multiplication
/ Division
% Modulo (reste d'une division entière)
^ Puissance
Ces opérateurs peuvent servir dans les conditions ou l'affectation, et la manipulation des valeurs numériques des variables :

NR % 2 == 1 { nb_ligne_impaire = nb_ligne_impaire + 1 }
Les variables sont souvent objets de manipulations arithmétiques (comme dans l'exemple), il existe donc des formules pour abréger l'écriture :

Formule Equivalence
my_var = my_var + Valeur my_var += Valeur
my_var = my_var - Valeur my_var -= Valeur
my_var = my_var * Valeur my_var *= Valeur
my_var = my_var / Valeur my_var /= Valeur
my_var = my_var % Valeur my_var %= Valeur
Enfin, nous allons voir les derniers opérateurs qui sont aussi connus dans la plupart des autres langages. Ce sont les opérateurs de décrémentation et d'incrémentation :

Opérateur Signification
++ Incrémentation
(Rajoute +1 a la valeur de la variable)
-- Décrémentation
(Enlève -1 a la valeur de la variable)
Ces opérateurs doivent être utilisés avec prudence. Nous allons voir pourquoi :

i = 10 j = i++ print j, i
Cet extrait de programme va afficher 10 pour j et 11 pour i. Ceci peut paraître troublant mais cela se produit car la valeur de la variable i n'est augmentée qu'après l'affectation. L'incrémentation se passe après l'affectation car l'opérateur se situe après la variable (en suffixe).

Si vous aviez placés l'opérateur en préfixe, alors l'incrémentation se serait passée avant l'affectation :

i = 10 j = ++i print j, i
Dans cet extrait, les deux variables ont la même valeur : 11.


IV-4. Exemples

Ce script permet d'afficher les lignes paires d'un fichier :

#! /usr/bin/awk -f NR % 2 == 1 { print $0 }
Ce script permet d'afficher les 7 premières lignes d'un fichier avec le numéro (demarrant a 1) :

#! /usr/bin/awk -f BEGIN { n = 7 } NR <= n { print NR, $0 }
Ce script peut être écrit de la manière suivante :

#! /usr/bin/awk -f NR <= n { print NR, $0 }
Ainsi il affichera les n premières lignes des fichiers. Mais il faudra l'appeler de la manière suivante avec le shell :

nyal $ ./aff_n_lines.awk n=7 fichier_texte
L'argument b=7 ne sera pas pris comme un fichier à lire à cause de sa syntaxe avec le égale. Awk assignera dans le script la valeur à la variable. Ainsi 7 sera assigné à la variable n. Cette valeur est affectée avant que le script soit lancé.



Ce document est issu de http://www.developpez.com et reste la propriété exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise à l'obtention préalable de l'autorisation de l'auteur.
Vos questions techniques : forum d'entraide PHP - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Copyright 2000..2004 www.developpez.com