Dans le cadre de traitements de fichiers plats, utilisez le awk. Il fait référence à Alfred Aho, Peter Weinberger et Brian Kerninghan qui sont les trois créateurs du langage. En suivant cet article, découvrez davantage sur ce type de programmation.
Sommaire
Les concepts du awk
Dans le langage du awk, de nombreux paramètres sont à maîtriser, à commencer par le concept. Awk sert à priori à ouvrir, à lire et à fermer des fichiers sans pour autant les endommager. Pour ce faire, il suffit de placer en entrée les fichiers sources, d’analyser les données et de récupérer les résultats en sortie. Par la suite, awk passe au traitement des fichiers de données en présentant le tout dans un tableau contenant toutes les données.
Il est aussi possible de programmer awk pour la lecture de plusieurs lignes à la fois. Dans ce cas, la modification des variables et des séparateurs est de mise.
La lecture
Dans le langage awk, la lecture du fichier se fait grâce à des blocs d’instructions se trouvant dans des accolades. Cependant, avant de lire le premier enregistrement, l’utilisation de la commande blog BEGIN est indispensable. Lorsque la lecture du dernier enregistrement est terminée, pensez également à ajouter la commande bloc END.
Sachez que awk se place toujours entre des apostrophes. Après la lecture, les fichiers sont placés dans la variable $0. Quant à l’enregistrement, il est scindé dans un tableau contenant la variable $1 à $NF.
L’affichage
Dans le programme awk, la fonction print ou affichage de texte et de variables est couramment utilisée. Pour les séparer, l’utilisation de virgule est indispensable. En ce qui concerne l’espace entre les deux champs, vous vous servez de la variable OFS par défaut. Afin d’afficher les données, servez-vous de la fonction printf. Celle-ci permet entre autres d’afficher des nombres.
Les variables
En awk, plusieurs variables sont employées afin d’exécuter un programme comme il se doit. Il y a par exemple les variables de base telles que FS qui est un séparateur de champs, NR qui représente le numéro d’enregistrement parcouru et RS qui est un séparateur d’enregistrement ou un saut à la ligne.
En programmation awk, d’autres variables peuvent être également utilisées :
- ARGC : nombre d’arguments de la ligne de commandes ;
- FNR : numéro de l’enregistrement parcouru dans le fichier courant ;
- ENVIRON : tableau associatif des variables d’environnement ;
- ARGV : tableau des arguments de la ligne de commandes ;
- FILEMANE : nom du fichier courant, etc.
Sachez que les variables personnelles n’ont ni besoin d’initialisation ni de déclaration. Toutefois, si vous mélangez des caractères et des entiers, veillez à respecter les règles de programmation requises. Dans le cas des instructions qui ne sont pas précédées de BEGIN, END ou de conditions particulières, l’exécution est automatique pour chaque enregistrement.
Les chaînes de caractères
Afin de faciliter le traitement des chaînes de caractères ou de string en anglais, awk dispose plusieurs fonctions disponibles. En voici quelques-unes avec leurs descriptions respectives.
Gsub (exp, sub, str)
Il s’agit d’une fonction qui substitue régulièrement l’expression exp dans str à la chaîne sub. Dans le cas où str n’est pas renseignée, la valeur par défaut est $0.
index (str, st)
C’est la fonction qui permet de retourner la position du string st dans la chaîne str. Si aucun résultat ne s’affiche, la valeur par défaut est 0.
toupper (str) et tolower (str)
Toupper est une fonction qui permet de changer en majuscule toute la chaîne str. Par contre, tolower sert à transformer une chaîne en minuscule. Quoi qu’il en soit c’est une manière efficace d’obtenir ou de créer une nouvelle chaîne dans la programmation awk.
En programmation awk, vous pouvez aussi vous servir d’autres fonctions de string comme match, split, sprintf, sub, substr, etc. Dans tous les cas, la suite de chaînes de caractères ne nécessite ni d’espace ni de caractère particulier.
Les fonctions mathématiques
Awk peut aussi servir au traitement numérique grâce à différentes fonctions mathématiques au choix. Retrouvez ci-dessous les plus courantes :
- cos ® : cosinus de l’angle r ;
- exp : exponentiel ;
- int : valeur entière ;
- log : logarithme ;
- sin : sinus de l’angle ;
- srand : pour la réinitialisation de la fonction rand ;
- rand : nombre pseudo aléatoire inclut entre 0 et 1 ;
- atan2 : arc tangente
- sqrt : racine carrée de x.
Les fonctions personnelles
Dans le langage awk, vous pouvez ajouter des fonctions personnelles. Elles se trouvent généralement en dehors des blocs d’instructions. Vous pouvez également utiliser les fonctions personnelles dans un autre script par le biais de l’option f. Veillez à ne pas oublier les paramètres correspondants à votre fonction.
Les conditions
En langage awk, il y a également l’instruction if. Cela consiste à intégrer des conditions à l’intérieur des blocs. S’il s’agit d’une seule instruction, vous n’êtes pas obligé d’utiliser des accolades. Par contre, dans le cas de plusieurs instructions, il est impératif de les séparer avec un point-virgule tout en les renfermant dans des accolades. Vous pouvez aussi être amené à vous servir de « ? » comme opérateur de réduction de conditions.
Les boucles
Dans le langage awk, plusieurs boucles sont disponibles. Il y a par exemple la boucle do… while qui exécute les instructions une fois que les conditions sont vérifiées. Vous pouvez aussi vous servir de la boucle for dans les tableaux à simple dimension ou au niveau des instructions basiques. Pour sortir d’une instruction, n’hésitez pas à employer l’instruction break. Par contre, afin de passer tout de suite à l’instruction suivante, utilisez l’instruction next.
En programme awk, l’utilisation de tableau est aussi envisageable. Tout comme les variables, les tableaux ne sont pas à déclarer. Il est possible d’employer des tableaux à simple ou à multidimensionnels.
Bref, le programme awk tout comme le programme c sert à exécuter des programmes. La seule différence que celui-ci est particulièrement dédié au traitement de fichiers plats. Awk existe en plusieurs versions selon votre système d’exploitation : Gawk, Cygwin, Windows, Unix, etc.
Découvrez aussi : C’est quoi un OIV ?