Recherche de site Web

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 :

  1. > – supérieur à
  2. < – moins de
  3. >= – supérieur ou égal à
  4. <= – inférieur ou égal à
  5. == – égal à
  6. != – différent de
  7. some_value ~/pattern/ – vrai si some_value correspond au modèle
  8. some_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 :

  1. 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.
  2. 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.