GNU/Linux >> Tutoriels Linux >  >> Linux

4 Exemples d'instructions Awk If ( if, if else, if else if, :? )

Cet article fait partie de la série d'exemples de didacticiels Awk en cours. Dans nos articles awk précédents, nous avons discuté de l'impression awk, des variables définies par l'utilisateur awk, des variables intégrées awk et des opérateurs awk.

Dans ce didacticiel awk, examinons les instructions if conditionnelles awk avec des exemples pratiques.

Awk prend en charge de nombreuses instructions conditionnelles pour contrôler le flux du programme. La plupart de la syntaxe des instructions conditionnelles Awk ressemble au langage de programmation "C".

Normalement, l'instruction conditionnelle vérifie la condition avant d'effectuer toute action. Si la condition est vraie, une ou plusieurs actions sont exécutées. De même, une action peut être effectuée si la condition est fausse.

L'instruction conditionnelle commence par le mot-clé appelé "if". Awk prend en charge deux types différents d'instruction if.

  1. Instruction Awk Simple If
  2. Instruction Awk If-Else
  3. Awk If-ElseIf-Ladder

Instruction If simple Awk

Action unique : L'instruction Si simple est utilisée pour vérifier les conditions, si la condition renvoie vrai, elle exécute l'action ou les actions correspondantes.

Syntax:
if (conditional-expression)
	action
  • si est un mot-clé
  • conditional-expression – expression pour vérifier les conditions
  • action - toute instruction awk pour effectuer une action.

Action multiple : Si l'expression conditionnelle renvoie vrai, alors l'action sera exécutée. Si plusieurs actions doivent être effectuées, les actions doivent être placées entre accolades, en les séparant par une nouvelle ligne ou un point-virgule, comme indiqué ci-dessous.

Syntax:
if (conditional-expression)
{
	action1;
	action2;
}

Si la condition est vraie, toutes les actions entre accolades seront exécutées dans l'ordre indiqué. Une fois toutes les actions effectuées, il continue d'exécuter les instructions suivantes.

Awk If Else Statement

Dans l'instruction simple awk If ci-dessus, il n'y a pas d'ensemble d'actions dans le cas où la condition est fausse. Dans l'instruction awk If Else, vous pouvez donner la liste des actions à effectuer si la condition est fausse. Si la condition renvoie vrai, l'action 1 sera effectuée, si la condition est fausse, l'action 2 sera effectuée.

Syntax:
if (conditional-expression)
	action1
else
	action2

Awk a également un opérateur conditionnel, c'est-à-dire opérateur ternaire ( ?:) dont la fonctionnalité est similaire à l'instruction awk If Else. Si l'expression-conditionnelle est vraie, action1 sera exécutée et si l'expression-conditionnelle est fausse, action2 sera exécutée.

Syntax:

conditional-expression ? action1 : action2 ;

Awk If Else If échelle

if(conditional-expression1)
	action1;
else if(conditional-expression2)
	action2;
else if(conditional-expression3)
	action3;
	.
	.
else
	action n;
  • Si l'expression-conditionnelle1 est vraie, alors l'action1 sera exécutée.
  • Si l'expression-conditionnelle1 est fausse, alors l'expression-conditionnelle2 sera vérifiée, si elle est vraie, l'action2 sera exécutée et continue comme ceci. La dernière partie else sera exécutée si aucune des expressions conditionnelles n'est vraie.

Créons maintenant l'exemple de fichier d'entrée contenant les notes des élèves.

$cat student-marks
Jones 2143 78 84 77
Gondrol 2321 56 58 45
RinRao 2122 38 37
Edwin 2537 87 97 95
Dayan 2415 30 47

1. Awk If Exemple :Vérifier que toutes les marques existent

$ awk '{
if ($3 =="" || $4 == "" || $5 == "")
	print "Some score for the student",$1,"is missing";'
}' student-marks
Some score for the student RinRao is missing
Some score for the student Dayan is missing

3 $, 4 $ et 5 $ sont les résultats des tests de l'étudiant. Si le score du test est égal à vide, il lance le message. || l'opérateur doit vérifier que l'une des marques n'existe pas, il doit alerter.

2. Awk If Else Exemple :générer un rapport de réussite/échec basé sur les notes des élèves dans chaque matière

$ awk '{
if ($3 >=35 && $4 >= 35 && $5 >= 35)
	print $0,"=>","Pass";
else
	print $0,"=>","Fail";
}' student-marks
Jones 2143 78 84 77 => Pass
Gondrol 2321 56 58 45 => Pass
RinRao 2122 38 37 => Fail
Edwin 2537 87 97 95 => Pass
Dayan 2415 30 47 => Fail

La condition pour réussir est que toutes les notes du test doivent être supérieures ou égales à 35. Ainsi, tous les résultats du test sont vérifiés s'ils sont supérieurs à 35, puis il imprime toute la ligne et la chaîne "Pass", sinon c'est-à-dire même si l'un des le résultat du test ne remplit pas la condition, il imprime toute la ligne et imprime la chaîne "Fail".

3. Awk If Else If Exemple :Trouvez la moyenne et la note de chaque élève

$ cat grade.awk
{
total=$3+$4+$5;
avg=total/3;
if ( avg >= 90 ) grade="A";
else if ( avg >= 80) grade ="B";
else if (avg >= 70) grade ="C";
else grade="D";

print $0,"=>",grade;
}
$ awk -f grade.awk student-marks
Jones 2143 78 84 77 => C
Gondrol 2321 56 58 45 => D
RinRao 2122 38 37 => D
Edwin 2537 87 97 95 => A
Dayan 2415 30 47 => D

Dans le script awk ci-dessus, la variable appelée « avg » a la moyenne des trois scores de test. Si la moyenne est supérieure ou égale à 90, la note est A, ou si la moyenne est supérieure ou égale à 80, la note est B, si la moyenne est supérieure ou égale à 70, la note est C. Ou sinon la note est D.

4. Awk Ternary ( ?:) Exemple :concaténer toutes les 3 lignes d'entrée avec une virgule.

$ awk 'ORS=NR%3?",":"\n"' student-marks
Jones 2143 78 84 77,Gondrol 2321 56 58 45,RinRao 2122 38 37
Edwin 2537 87 97 95,Dayan 2415 30 47,

Nous avons discuté de la variable intégrée awk ORS plus tôt. Cette variable est ajoutée après chaque ligne qui obtient la sortie. Dans cet exemple, il est changé toutes les 3 lignes d'une virgule à une nouvelle ligne. Pour les lignes 1, 2 c'est une virgule, pour la ligne 3 c'est une nouvelle ligne, pour les lignes 4, 5 c'est une virgule, pour la ligne 6 une nouvelle ligne, etc.

Lecture recommandée

Sed et Awk 101 Hacks, par Ramesh Natarajan . Je passe plusieurs heures par jour sur un environnement UNIX / Linux à gérer des fichiers texte (fichiers de données, de configuration et de journalisation). J'utilise Sed et Awk pour tout mon travail de manipulation de texte. Sur la base de mon expérience Sed et Awk, j'ai écrit Sed and Awk 101 Hacks eBook qui contient 101 exemples pratiques sur diverses fonctionnalités avancées de Sed et Awk qui amélioreront votre vie UNIX / Linux. Même si vous utilisez Sed et Awk depuis plusieurs années et que vous n'avez pas lu ce livre, rendez-vous service et lisez ce livre. Vous serez étonné des capacités des utilitaires Sed et Awk.


Linux
  1. Comment utiliser l'instruction conditionnelle if else dans le script bash

  2. Instruction Bash If-Else avec des exemples

  3. Les tableaux AWK expliqués avec 5 exemples pratiques

  4. 5 exemples d'instructions Bash Case

  5. Exemples de commandes awk sous Linux

Instruction Bash if..else

Instruction Python if..else

Commande Linux awk avec 10 exemples

10 exemples de commandes Awk impressionnants sous Linux

Syntaxe Bash If Else avec exemples

Tutoriel Regex pour les exemples Linux (Sed &AWK)