Awk

Comment utiliser l'instruction conditionnelle dans la commande awk

Comment utiliser l'instruction conditionnelle dans la commande awk
L'instruction conditionnelle est utilisée dans n'importe quel langage de programmation pour exécuter n'importe quelle instruction basée sur une condition particulière. L'instruction conditionnelle s'exécute en fonction de la valeur true ou false lorsque les instructions if-else et if-elseif sont utilisées pour écrire l'instruction conditionnelle dans la programmation. Awk prend en charge tous les types d'instructions conditionnelles comme les autres langages de programmation.  Comment différentes instructions conditionnelles peuvent être utilisées dans la commande awk est montrée dans ce tutoriel.

Syntaxe:

La syntaxe pour quatre types d'instructions conditionnelles est mentionnée ci-dessous.

  1. si déclaration
si (condition)
déclaration

L'instruction s'exécute lorsque la condition if retourne true.

  1. instruction if-else
si (condition)
déclaration-1

autre
déclaration-2

L'instruction-1 s'exécute lorsque la condition if est vraie et l'instruction-2 s'exécute lorsque if renvoie false.

  1. instruction if-elseif
si (condition)
déclaration-1

sinon
déclaration-2

sinon
déclaration-3

… .
autre
instruction-n

Cette instruction conditionnelle est utilisée pour exécuter une instruction basée sur plusieurs conditions if. Si la première condition est fausse alors il vérifie la deuxième condition. Si la deuxième condition est fausse alors il vérifie la troisième condition et ainsi de suite. Si toutes les conditions retournent false, il exécutera l'instruction de la partie else.

  1. Ternaire (?:) opérateur
(état) ? déclaration-1: déclaration-2

L'opérateur ternaire peut être utilisé comme alternative à l'instruction if-else. Si la condition est vraie, l'instruction-1 s'exécutera et si la condition est fausse, l'instruction-2 s'exécutera.

Exemple-1 : Utilisation de simple if dans awk

Créer un fichier texte nommé employé.SMS avec le contenu suivant. Supposons que vous deviez trouver le nom du département, l'âge et le salaire de l'employé dont l'identifiant est 11002.

employé.SMS

11001  Ventes     45   3000 $
11002  RH        32   1500 $
11003  Marketing 26   1 200 $
11004  RH        25   2500 $

Une simple condition if est utilisée dans le script suivant pour rechercher l'id 11002 dans le premier champ du fichier. Si la condition devient vraie alors il imprimera les valeurs des autres champs de la ligne correspondante sinon rien ne sera imprimé.

$ awk '
si($1 =="11002")

print "Nom du département : ",$2,"\n" ;
print "Âge : ", $3,"\n" ;
print "Salaire : ", $4,"\n" ;
 

' employé.SMS

Production:

L'id, 1102 existe dans le fichier. Donc, il a imprimé les autres valeurs de l'employé.

Exemple 2 : utilisation de if-else dans awk

Supposons que vous souhaitiez imprimer les informations sur le salaire des employés dont l'âge est inférieur ou égal à 40 ans et imprimer les informations sur l'âge des autres employés. Le script awk suivant peut effectuer cette tâche. Il n'y a qu'un seul employé dans employé.SMS dossier dont l'âge est supérieur à 40 ans et l'âge de tous les autres employés est inférieur à 40 ans.

$ awk '
si (3 $ <= 40)

print "Le salaire de ",$1, " est ", $4, "\n"

autre

print "L'âge de ",$1, " est ", $3, "\n"

 
' employé.SMS

Production:

La sortie suivante apparaîtra après l'exécution du script.

Exemple-3 : Utilisation de if-elseif dans un script awk

Créer un fichier texte nommé personne.txt avec le contenu suivant.

personne.SMS

JACKSON     Homme      Entreprise
MARTIN      Homme      Titulaire du service
LILY        Femme    Manager
ROBINSON    Homme      PDG

Créer un fichier awk nommé if_elseif.ok avec le code suivant pour imprimer la couleur préférée de chaque personne dont le nom existe dans le fichier. L'instruction If-elseif est utilisée dans le script pour effectuer cette tâche. Le script lira la première valeur de champ du fichier, employé.SMS et vérifier avec une valeur particulière. Si le premier si la condition devient fausse alors il vérifiera la seconde si état et ainsi de suite. Lorsqu'une condition if devient vraie, une valeur de couleur sera attribuée. Si toutes les conditions deviennent fausses alors Rien sera attribué comme valeur de couleur. La couleur préférée de chaque personne s'imprimera ou "Aucune personne trouvée" s'imprimera si aucun nom de personne ne correspond.

if_elseif.ok


nom=$1;
if ( name=="JACKSON" ) color="Blue" ;
else if (name=="MARTIN") color="Black" ;
else if (name=="LILY") color="Red" ;
else if (name=="ROBINSON") color="White" ;
else color="Aucun" ;
 
si (couleur!="Aucun") print "La couleur préférée de ", nom, "est ", couleur;
else print "Aucune personne trouvée" ;
 

Exécutez la commande suivante pour exécuter le fichier if_elseif.mal à l'aise avec la personne.SMS

$ awk -f if_elseif.personne maladroite.SMS

Production:

La sortie suivante apparaîtra après l'exécution de la commande.

Exemple-4 : Utilisation de l'opérateur ternaire dans awk

Le troisième domaine de personne.SMS le dossier contient la profession de chaque personne. L'opérateur ternaire suivant lit chaque ligne du fichier et fait correspondre la valeur du troisième champ avec "Directeur". Si la valeur correspond alors il imprimera le nom de la personne et sinon il imprimera le sexe de la personne.

$ awk ' print ($3=="Gestionnaire") ? "Le nom est " $1 : "Le sexe est " $2' personne.SMS

Production:

La sortie suivante apparaîtra après l'exécution du script. Une personne avec « la profession de gestionnaire existe dans le personne.SMS. Ainsi, le nom d'une personne est imprimé et le sexe est imprimé pour les autres personnes.

Exemple-5 : Utilisation de plusieurs conditions dans l'instruction if

OU logique et ET logique peuvent être utilisés pour définir plusieurs conditions dans l'instruction conditionnelle du script awk. Le script awk suivant lit chaque ligne de employé.SMS et vérifie l'âge et la désignation avec des valeurs particulières. L'ET logique est utilisé dans le si état. Lorsque la valeur de l'âge est supérieure ou égale à 30 et que la désignation est « HR », l'identifiant et le salaire de l'employé correspondant s'imprimeront.

$ awk ' if ($3 >= 30 && $2 == "HR") print "Employe id: ",
$1, " et ", " Salaire : ", $4, "\n";' employé.SMS

Production:

La sortie suivante apparaîtra après l'exécution du script. Il n'existe qu'un seul employé portant la désignation « RH » dans employé.SMS. Les informations d'identification et de salaire de cet employé sont imprimées ici.

Conclusion:

Les utilisations les plus courantes de l'instruction conditionnelle de toute programmation standard sont prises en charge par la commande awk. Comment vous pouvez utiliser des conditions simples et multiples dans awk est expliqué en utilisant des exemples très simples ici. J'espère qu'après avoir pratiqué ces exemples, l'apprenant sera capable d'utiliser correctement l'instruction conditionnelle dans le script awk.

Meilleures distributions Linux pour les jeux en 2021
Le système d'exploitation Linux a parcouru un long chemin depuis son apparence originale, simple et basée sur le serveur. Ce système d'exploitation s'...
Comment capturer et diffuser votre session de jeu sur Linux
Dans le passé, jouer à des jeux n'était considéré qu'un passe-temps, mais avec le temps, l'industrie du jeu a connu une croissance énorme en termes de...
Meilleurs jeux à jouer avec le suivi des mains
Oculus Quest a récemment introduit l'idée géniale du suivi manuel sans contrôleurs. Avec un nombre toujours croissant de jeux et d'activités qui exécu...