AWK est un outil du shell permettant de travailler avec et sur le contenu de fichiers textes (CSV, TXT, XML, logs, …). Premiere prise de contact avec l’outil.

Prenons le cas suivant : on a un fichier texte contenant des milliers de lignes, et on souhaite extraire de ce fichier les lignes comportant un pattern particulier. Le premier réflexe serait d’utiliser « grep », sauf que parfois le pattern recherché peut-être présent plusieurs fois sur une ligne, et on souhaite un filtre plus précis. ++Voici un exemple de fichier: ++ (mon_fichier.txt) @@1,1197158561,271128656,Bignou,0,0,2007-12-09 01:02:42.000@@%%% @@1,1197158561,271128656,Bignou,1,0,2007-12-09 01:02:42.000@@%%% @@1,1197158561,271128656,Bignou,2,0,2007-12-09 01:03:53.000@@%%% @@1,1197158561,271128656,Bignou,4,0,2007-12-09 01:03:34.000@@%%% @@1,1197158584,271128659,Bignou,0,0,2007-12-09 01:03:04.000@@%%% @@1,1197158584,271128659,Bignou,1,0,2007-12-09 01:03:05.000@@%%% @@1,1197158584,271128659,Bignou,2,0,2007-12-09 01:03:42.000@@%%% @@1,1197158584,271128659,Bignou,4,0,2007-12-09 01:03:24.000@@%%% @@1,1197158942,271128716,Bignou,0,0,2007-12-09 01:09:02.000@@ Imaginons qu’on ne veuille garder que les lignes ayant un zéro dans le 5ème champ :%%% @@awk -F », » ‘{if ($5 == « 0″) print $0}’ mon_fichier.txt@@ ++__Explications :__++%%% @@-F », »@@ indique à awk que le séparateur de champ est la virgule%%% @@’{…}’@@ englobe les instructions pour awk%%% @@if ($5 == « 0″)@@ effectue un test : si le cinquième champ est égal à 0, alors%%% @@print $0@@ on affiche toute la ligne ($0 = toute la ligne, $1 = premier champ, …)%%% ++__Résultat :__ ++%%% @@1,1197158561,271128656,Bignou,0,0,2007-12-09 01:02:42.000@@%%% @@1,1197158584,271128659,Bignou,0,0,2007-12-09 01:03:04.000@@%%% @@1,1197158942,271128716,Bignou,0,0,2007-12-09 01:09:02.000@@%%% Pour finir, awk permet d’aller beaucoup plus loin dans la manipulation du contenu du fichier, nous ne nous en sommes servi ici que pour faire un filtre d’affichage. Pour plus d’infos sur awk, allez faire un tour ici : [AWK|http://www.shellunix.com/awk.html|fr]