Comment utiliser la commande 'next' avec awk sous Linux - Partie 6
Dans cette sixième partie de la série Awk, nous allons nous plonger dans la commande suivante et voir comment elle peut être utilisée pour optimiser l’exécution de vos scripts, car cette commande est particulièrement utile pour sauter des étapes inutiles dans le traitement de vos données.
Quel est le prochain commandement ?
La commande suivante dans awk lui dit de sauter les motifs et actions restants pour la ligne actuelle et de passer à la ligne de saisie suivante. Cela permet d’éviter d’exécuter des étapes redondantes ou inutiles, ce qui rend vos scripts plus efficaces.
Exemple 1 : Marquage d’articles en fonction de la quantité
Commençons par un exemple pratique en considérant un fichier nommé food_list.txt avec le contenu suivant.
Food List Items
No Item_Name Price Quantity
1 Mangoes $3.45 5
2 Apples $2.45 25
3 Pineapples $4.45 55
4 Tomatoes $3.45 25
5 Onions $1.45 15
6 Bananas $3.45 30
Envisagez d’exécuter la commande suivante qui marquera les aliments dont la quantité est inférieure ou égale à 20 avec un signe (*) à la fin de chaque ligne :
awk '$4 <= 20 { printf "%s\t%s\n", $0,"*" ; } $4 > 20 { print $0 ;}' food_list.txt
La commande ci-dessus fonctionne en fait comme suit :
- Tout d’abord, il vérifie si la quantité, quatrième champ de chaque ligne d’entrée est inférieure ou égale à 20, si une valeur répond à cette condition, elle est imprimée et marquée du signe
(*)à la fin en utilisant l’expression un :4 $<= 20 - Deuxièmement, il vérifie si le quatrième champ de chaque ligne d’entrée est supérieur à 20, et si une ligne remplit la condition, elle est imprimée en utilisant l’expression deux :
$4 > 20
Le problème :
Mais il y a un problème ici, lorsque la première expression est exécutée, une ligne que nous voulons marquer est affichée en utilisant : { printf « %s\t %s\n », $0,"** » ; } et puis, dans la même étape, la deuxième expression est également vérifiée, ce qui devient un facteur de perte de temps.
Il n’est donc pas nécessaire d’exécuter à nouveau la deuxième expression, $4 > 20 après avoir imprimé des lignes déjà marquées qui ont été imprimées à l’aide de la première expression.
Commande optimisée à l’aide de next
Pour résoudre ce problème, vous devez utiliser la commande suivante comme suit :
awk '$4 <= 20 { printf "%s\t%s\n", $0,"*" ; next; } $4 > 20 { print $0 ;}' food_list.txt
Voici comment cela fonctionne :
- Lorsqu’une ligne remplit la condition
de 4 $<=20, elle imprime la ligne avec un astérisque, puis saute les actions restantes pour cette ligne, passant directement à la ligne suivante. - Cela empêche la vérification de la condition
$4 >l 20 pour leslignes déjà traitées.
Exemple 2 : Filtrage et formatage des données
Considérons un fichier data.txt avec le contenu suivant :
ID Name Age Score
1 Alice 30 85
2 Bob 25 90
3 Charlie 35 70
4 David 28 92
Si vous souhaitez imprimer uniquement les enregistrements dont le score est supérieur à 80 et les formater comme « Nom : [Nom], Score : [Score] », utilisez :
awk '$4 > 80 { printf "Name: %s, Score: %d\n", $2, $4; next; }' data.txt
Résumé
L’utilisation de la commande suivante dans awk est un moyen puissant de rationaliser le traitement de vos données en évitant les évaluations inutiles. En sautant le reste du script pour les lignes qui ont déjà été traitées, vous rendez vos scripts awk plus efficaces et plus rapides.
Pour ceux qui recherchent une ressource complète, nous avons compilé tous les articles de la série Awk dans un livre, qui comprend 13 chapitres et s’étend sur 41 pages, couvrant à la fois l’utilisation de base et avancée d’Awk avec des exemples pratiques.
| Nom du produit | Prix | Acheter |
|---|---|---|
| eBook : Présentation du guide de démarrage Awk pour les débutants | 8,99 $ | [Acheter maintenant] |
Dans la prochaine partie de notre série awk, nous allons explorer comment utiliser l’entrée standard (STDIN) avec awk. Restez à l’écoute, et comme toujours, n’hésitez pas à partager vos réflexions et vos questions dans les commentaires ci-dessous !


