Awk est un puissant langage de programmation de traitement de données intégré à presque tous les systèmes *nix. En apparence, il ressemble à un langage de programmation à usage général, mais il est conçu pour prendre des entrées et exécuter des actions en fonction de ces entrées. Si vous devez traiter du texte en fonction de certaines conditions, awk fera presque toujours le travail plus rapidement qu’un langage à usage général comme le C. Il est également interprété, vous évitez ainsi le long processus de compilation et de débogage des langages compilés.
Fait amusant supplémentaire: le nom impair du programme est un sigle des noms de ses programmeurs : Alfred UNEho, Pierre Weinberger et Brian Kernighan
Contenu
La syntaxe de base d’Awk
Lorsqu’il est invoqué sur la ligne de commande, awk suit le modèle de base ci-dessous :
Awk exécutera l’action chaque fois que le modèle correspondra au fichier spécifié. Si vous ne spécifiez pas de fichier, awk s’exécutera sur la sortie standard. Lors de la correspondance des modèles, awk peut prendre des expressions régulières ainsi que des entrées de programmation. Considérons cet exemple de base ci-dessous :
Ce programme d’une ligne imprimera chaque ligne du fichier « e-mails » contenant les caractères com. Dans awk $0 fait référence à la ligne actuelle, qui est également le comportement par défaut. La ligne aurait pu être écrite sans $0, et elle aurait fonctionné de manière identique.
Champs d’impression
Comme awk peut identifier et analyser les séparateurs de champs, il est utile pour imprimer des colonnes ou des lignes de données spécifiques. Nous utiliserons le fichier « /etc/passwd » pour cet exemple.
Ce programme à une ligne fait quelques choses. L’indicateur -F indique que le caractère suivant (: dans cet exemple) doit être interprété comme le séparateur de champ. Awk them imprime le premier champ, spécifié par $1.
Nous pouvons également imprimer plus d’un champ à la fois en spécifiant les champs de manière séquentielle :
Il produira une sortie qui ressemble à ce qui suit.
Cela imprime les quatrième et cinquième champs du fichier passwd avec un espace entre eux. Notez que l’espace est entre guillemets doubles. Cela le spécifie comme un caractère littéral dans la commande d’impression, il est donc imprimé tel qu’il est écrit. Nous pouvons également ajouter des littéraux plus compliqués pour nettoyer notre sortie :
Cela imprimera la sortie avec des étiquettes d’identification. Et nous pouvons exporter tout cela dans un nouveau fichier en utilisant un caret (>).
Nous pouvons combiner ce que nous savons jusqu’à présent pour traiter les données de manière extensive. Par exemple, nous pouvons utiliser des expressions régulières pour imprimer toutes les lignes d’un document contenant un numéro de téléphone américain valide.
Étendre la puissance correspondante de la commande Awk
Awk peut également traiter des informations en utilisant une variété d’opérandes. Cela inclut les opérandes standard comme ==, <, >, <=, >= et !=, ainsi que les opérandes spécifiques à awk ~ et !~, qui signifient respectivement « correspond à » et « ne correspond pas ». Ces opérandes sont utilisés lors de la comparaison d’expressions régulières avec la logique booléenne, ainsi que d’expressions de programmation plus standard.
Exemples de commandes Awk
Imprime toutes les lignes de plus de quatre-vingts caractères dans le fichier « données ». Notez l’absence d’instruction print : en l’absence d’une action spécifiée, awk imprimera la ligne complète chaque fois qu’un motif correspond.
Imprime toutes les lignes où le premier champ est égal à la chaîne « utilisateur ». Sans indicateur -F, awk utilisera un espace blanc comme séparateur de champ par défaut. Notez également que awk et le fichier ne sont pas spécifiés. Ceci est destiné à être utilisé dans des scripts dans des fichiers séparés, comme indiqué ci-dessous.
Imprime le troisième champ chaque fois que le cinquième champ correspond à l’expression régulière /root/.
Lorsque le champ 5 ne correspond pas à /root/, imprimez le champ trois. Cela utilise l’instruction if de type C, qui est également compatible avec awk. Ce format permet plus de flexibilité pour les programmeurs familiers avec les langages à usage général.
Enregistrement de scripts dans des fichiers
Les scripts Awk peuvent également être enregistrés dans des fichiers qui vous permettent d’enregistrer des programmes plus complexes :
Lors de l’utilisation de l’indicateur -f, awk exécute le script dans le chemin de fichier spécifié, à savoir program.awk. Les commandes de ce programme traiteront le fichier « données ».
Les actions peuvent également être exécutées avant et après le programme, en utilisant BEGIN et END :
Comme vous pouvez le voir ci-dessus, le symbole # démarre un commentaire, qui dure jusqu’à la fin de la ligne.
Conclusion
Ce guide n’aborde que les éléments les plus élémentaires d’awk. Il y a bien plus à construire et à explorer au-delà de cela. Examinez la documentation GNU pour awk ou The Awk Programming Language, et le manuel awk écrit par les développeurs du programme.
Cet article est-il utile ? Oui Non