Stations de travail en ligne OnWorks Linux et Windows

Logo

Hébergement gratuit en ligne pour les postes de travail

<Précédent | Table des matières | Suivant>

Valider une liste téléphonique avec grep

Dans notre exemple précédent, nous avons examiné des numéros de téléphone uniques et vérifié leur mise en forme appropriée. Un scénario plus réaliste consisterait à vérifier une liste de nombres à la place, alors faisons une liste. Nous le ferons en récitant une incantation magique sur la ligne de commande. Ce sera magique car nous n'avons pas couvert la plupart des commandes impliquées, mais ne vous inquiétez pas. Nous y arriverons dans les prochains chapitres. Voici l'incantation :



[moi@linuxbox ~]$ pour i dans {1..10} ; faire echo "(${RANDOM:0:3}) ${RANDO M:0:3}-${RANDOM:0:4}" >> phonelist.txt ; terminé

[moi@linuxbox ~]$ pour i dans {1..10} ; faire echo "(${RANDOM:0:3}) ${RANDO M:0:3}-${RANDOM:0:4}" >> phonelist.txt ; terminé


Cette commande produira un fichier nommé liste téléphonique.txt contenant dix numéros de téléphone. Chaque fois que la commande est répétée, dix autres numéros sont ajoutés à la liste. On peut aussi changer la valeur 10 près du début de la commande pour produire plus ou moins de numéros de téléphone. Si nous examinons le contenu du fichier, cependant, nous voyons que nous avons un problème :



image

[moi@linuxbox ~]$ chat phonelist.txt


(232)

298-2265

(624)

381-1078

(540)

126-1980

(874)

163-2885

(286)

254-2860

(292)

108-518

(129)

44-1379

(458)

273-1642

(686)

299-8268

(198)

307-2440


Certains des nombres sont mal formés, ce qui est parfait pour nos besoins, puisque nous utiliserons

grep pour les valider.

Une méthode de validation utile serait de rechercher dans le fichier des numéros invalides et d'afficher la liste résultante :



[moi@linuxbox ~]$ grep -Ev '^\([0-9]{3}\) [0-9]{3}-[0-9]{4}$'

liste téléphonique.txt (292) 108-518

(129) 44-1379

[moi@linuxbox ~]$

[moi@linuxbox ~]$ grep -Ev '^\([0-9]{3}\) [0-9]{3}-[0-9]{4}$'

liste téléphonique.txt (292) 108-518

(129) 44-1379

[moi@linuxbox ~]$


Ici, nous utilisons le -v option pour produire une correspondance inverse afin que nous n'affichions que les lignes de la liste qui ne correspondent pas à l'expression spécifiée. L'expression elle-même inclut les métacaractères d'ancrage à chaque extrémité pour garantir que le nombre n'a aucun caractère supplémentaire à chaque extrémité. Cette expression requiert également que les parenthèses soient présentes dans un numéro valide, contrairement à notre exemple de numéro de téléphone précédent.


Meilleur système d'exploitation Cloud Computing chez OnWorks :