• [^] # Re: En AWK

    Posté par . En réponse au message Besoin d'aide pour mon premier script en perl: parser un fichier BIND. Évalué à 2.

    En fait il n'y a aucune expression régulière dans ce code. :)

    FNR et NR correspondent respectivement au nombre de lignes (on parle d'enregistrements en fait, car en changeant la valeur de RS, on peut acquérir un fichier en d'autres portions qu'en lignes) lues dans le fichier traité et dans l'ensemble des fichiers. Ici ça sert à traiter séparément le premier fichier "mydomain" (d'où le next en fin le bloc) : je découpe chaque ligne dans le tableau t en prenant la virgule comme séparation de champ, j'enregistre le premier champ comme clé dans le hash CSV, puis la ligne dans son aspect définitif comme valeur dans LINE.

    Le deuxième bloc va donc traiter le fichier "cvs". Il prend chaque premier champ et vérifie si celui-ci est une clé dans CVS. Si c'est le cas il émet un point-virgule. Ensuite et dans tous les cas, il imprime la ligne.

    Le dernier bloc END est spécial et exécuté en fin de traitement. Ici il restaure le contenu de LINE, c'est à dire le contenu de "mydomain" formaté comme il se doit.

    Si tu veux en apprendre plus sur AWK, qui a été une grande source d'inspiration pour Perl, je te conseille le Manuel de l'implémentation GNU, très complet, et la page POSIX, qui fera une bonne référence pour la programmation quotidienne. Si tu comptes te lancer dans la programmation shell, apprendre AWK est vraiment un bon investissement qui permet de coder rapidement des petits filtres sur mesure très efficaces.