Comment utiliser les opérateurs de comparaison avec Awk sous Linux - Partie 4
Lorsqu'il s'agit de valeurs numériques ou de chaînes dans une ligne de texte, le filtrage du texte ou des chaînes à l'aide d'opérateurs de comparaison s'avère pratique pour les utilisateurs de la commande Awk.
Dans cette partie de la série Awk, nous verrons comment filtrer du texte ou des chaînes à l'aide d'opérateurs de comparaison. Si vous êtes programmeur, vous devez déjà être familier avec les opérateurs de comparaison, mais pour ceux qui ne le sont pas, laissez-moi vous expliquer dans la section ci-dessous.
Que sont les opérateurs de comparaison dans Awk ?
Les opérateurs de comparaison dans Awk sont utilisés pour comparer la valeur de nombres ou de chaînes et incluent les éléments suivants :
>
– supérieur à<
– moins de>=
– supérieur ou égal à<=
– inférieur ou égal à==
– égal à!=
– différent desome_value ~/pattern/
– vrai si some_value correspond au modèlesome_value !~/pattern/
– vrai si some_value ne correspond pas au modèle
Maintenant que nous avons examiné les différents opérateurs de comparaison dans Awk, comprenons-les mieux à l'aide d'un exemple.
Dans cet exemple, nous avons un fichier nommé food_list.txt qui est une liste de courses pour différents produits alimentaires et j'aimerais signaler les produits alimentaires dont la quantité est inférieure ou égale à 20 en ajoutant ( **)
à la fin de chaque ligne.
No Item_Name Quantity Price
1 Mangoes 45 $3.45
2 Apples 25 $2.45
3 Pineapples 5 $4.45
4 Tomatoes 25 $3.45
5 Onions 15 $1.45
6 Bananas 30 $3.45
La syntaxe générale d'utilisation des opérateurs de comparaison dans Awk est la suivante :
expression { actions; }
Pour atteindre l'objectif ci-dessus, je devrai exécuter la commande ci-dessous :
# awk '$3 <= 30 { printf "%s\t%s\n", $0,"**" ; } $3 > 30 { print $0 ;}' food_list.txt
No Item_Name` Quantity Price
1 Mangoes 45 $3.45
2 Apples 25 $2.45 **
3 Pineapples 5 $4.45 **
4 Tomatoes 25 $3.45 **
5 Onions 15 $1.45 **
6 Bananas 30 $3.45 **
Dans l’exemple ci-dessus, deux choses importantes se produisent :
- La première expression { action ; combinaison, $3 <= 30 { printf “%s\t%s\n”, $0,”**” ; imprime les lignes avec une quantité inférieure ou égale à 30 et ajoute un (**) à la fin de chaque ligne. La valeur de la quantité est accessible à l'aide de la variable de champ $3.
- La deuxième expression { action ; combinaison, $3 > 30 { print $0 ; imprime les lignes inchangées puisque leur quantité est supérieure à 30.
Encore un exemple :
# awk '$3 <= 20 { printf "%s\t%s\n", $0,"TRUE" ; } $3 > 20 { print $0 ;} ' food_list.txt
No Item_Name Quantity Price
1 Mangoes 45 $3.45
2 Apples 25 $2.45
3 Pineapples 5 $4.45 TRUE
4 Tomatoes 25 $3.45
5 Onions 15 $1.45 TRUE
6 Bananas 30 $3.45
Dans cet exemple, nous souhaitons indiquer les lignes dont la quantité est inférieure ou égale à 20 avec le mot (TRUE) à la fin.
Résumé
Il s'agit d'un didacticiel d'introduction aux opérateurs de comparaison dans Awk. Vous devez donc essayer de nombreuses autres options et en découvrir davantage.
En cas de problèmes que vous rencontrez ou d'ajouts que vous avez en tête, déposez un commentaire dans la section commentaires ci-dessous. N'oubliez pas de lire la prochaine partie de la série Awk où je vous présenterai des expressions composées.