Recherche de site Web

Comment utiliser des expressions composées avec Awk sous Linux - Partie 5


Depuis le début, nous avons examiné des expressions simples pour vérifier si une condition était remplie ou non. Que se passe-t-il si vous souhaitez utiliser plusieurs expressions pour vérifier une condition particulière ?

Dans cet article, nous verrons comment combiner plusieurs expressions appelées expressions composées pour vérifier une condition lors du filtrage de texte ou de chaînes.

Dans Awk, les expressions composées sont construites à l'aide du && appelé (and) et du | | appelés opérateurs composés (ou).

La syntaxe générale des expressions composées est la suivante :

( first_expression ) && ( second_expression )

Ici, first_expression et second_expression doivent être vrais pour que l'expression entière soit vraie.

( first_expression ) || ( second_expression) 

Ici, l'une des expressions first_expression ou second_expression doit être vraie pour que l'expression entière soit vraie.

Attention : Pensez à toujours inclure les parenthèses.

Les expressions peuvent être construites à l'aide des opérateurs de comparaison que nous avons examinés dans la partie 4 de la série awk.

Voyons maintenant clairement à l'aide de l'exemple ci-dessous :

Dans cet exemple, nous avons un fichier texte nommé tecmint_deals.txt, qui contient une liste de superbes offres Tecmint aléatoires, il inclut le nom de l'offre, le prix et le type.

No      Name                                    Price           Type
1       Mac_OS_X_Cleanup_Suite                  $9.99           Software
2       Basics_Notebook                         $14.99          Lifestyle
3       Tactical_Pen                            $25.99          Lifestyle
4       Scapple                                 $19.00          Unknown
5       Nano_Tool_Pack                          $11.99          Unknown
6       Ditto_Bluetooth_Altering_Device         $33.00          Tech
7       Nano_Prowler_Mini_Drone                 $36.99          Tech 

Supposons que nous voulons uniquement imprimer et signaler les offres supérieures à 20 $ et de type « Tech » en utilisant le signe (**) à la fin. de chaque ligne.

Nous devrons exécuter la commande ci-dessous.

# awk '($3 ~ /^$[2-9][0-9]*\.[0-9][0-9]$/) && ($4=="Tech") { printf "%s\t%s\n",$0,"*"; } ' tecmint_deals.txt 

6	Ditto_Bluetooth_Altering_Device		$33.00		Tech	*
7	Nano_Prowler_Mini_Drone			$36.99          Tech	 *

Dans cet exemple, nous avons utilisé deux expressions dans une expression composée :

  1. Première expression, ($3 ~ /^\$[2-9][0-9]*\.[0-9][0-9]$/) ; vérifie les lignes avec des offres dont le prix est supérieur à 20 $, et cela n'est vrai que si la valeur de 3$ qui est le prix correspond au modèle /^\$[ 2-9][0-9]*\.[0-9][0-9]$/
  2. Et la deuxième expression, ($4 == “Tech”) ; vérifie si la transaction est de type « Tech » et elle n'est vraie que si la valeur de 4$ est égale à « Tech ».

N'oubliez pas qu'une ligne ne sera marquée avec le (**) que si la première expression et la deuxième expression sont vraies, comme l'indique le principe du Opérateur &&.

Résumé

Certaines conditions nécessitent toujours de créer des expressions composées pour que vous puissiez correspondre exactement à ce que vous souhaitez. Lorsque vous comprendrez l'utilisation des opérateurs de comparaison et d'expression composée, filtrer du texte ou des chaînes en fonction de certaines conditions difficiles deviendra facile.

J'espère que vous trouverez ce guide utile et pour toute question ou ajout, n'oubliez pas de laisser un commentaire et votre problème sera résolu en conséquence.