PED13-ML-séance 09.11.06
Bonjour à tous!
> on est dans l’étape de traitement des URLs; on a déjà vu la commande wget
> aujourd’hui, on va voir l’outil lynx et l’outil egrep
-
lynx
C’est un navigateur en ligne de commandes.
Jetons un oeil au man de lynx, et en particulier à l’option -dump de cette commande :
LYNX(1) LYNX(1) NAME lynx - a general purpose distributed information browser for the World Wide Web SYNOPSIS lynx [options] [path or URL] use "lynx -help" to display a complete list of current options. DESCRIPTION Lynx is a fully-featured World Wide Web (WWW) client for users running cursor-addressable, character-cell display devices (e.g., vt100 terminals, vt100 emulators running on Windows 95/NT or Macintoshes, or any other "curses-ori- ented" display). It will display hypertext markup lan- guage (HTML) documents containing links to files residing on the local system, as well as files residing on remote systems running Gopher, HTTP, FTP, WAIS, and NNTP servers. Current versions of Lynx run on Unix, VMS, Windows 95/NT, 386DOS and OS/2 EMX. Lynx can be used to access information on the World Wide Web, or to build information systems intended primarily for local access. For example, Lynx has been used to build several Campus Wide Information Systems (CWIS). In addition, Lynx can be used to build systems isolated within a single LAN. OPTIONS At start up, Lynx will load any local file or remote URL specified at the command line. For help with URLs, press "?" or "H" while running Lynx. Then follow the link titled, "Help on URLs." Lynx uses only long option names. Option names can begin with double dash as well, underscores and dashes can be intermixed in option names (in the reference below options are with one dash before them and with underscores).
> l’option lynx -dump URL : permet de récupérer le texte d’une URL
-dump dumps the formatted output of the default document or one specified on the command line to standard output. This can be used in the following way: lynx -dump http://www.trill-home.com/lynx.html
Problème : cette commande affiche à l’écran l’ensemble des données récupérées (le texte de l’URL).
Il faut insérer une redirection de flux (>) pour que ça soit plus lisible. En principe on doit obtenir le texte sans les balises.
Il faudra intégrer ce mécanisme (lynx -dump URL > fichier-redirige.txt) dans le script mis à disposition par les enseignants.
En fait, c’est le même mécanisme que enregistrer sous une page web à partir d’un navigateur comme Firefox.
-
egrep
La commande egrep est un outil UNIX qui permet de faire du filtrage de motifs. A l’aide de cette commande, on peut extraire d’un fichier texte toutes les lignes qui contiennent la châine de caractères (le motif) spécifié.
Syntaxe : egrep [motif] [fichier]
Pour représenter de manière générique les chaînes de caractères, on utilise les expressions régulières, qui permettent donc de filtrer la chaîne recherchée.
Pour ce faire, il faut utiliser les opérateurs d’expressions régulières, qui ont une sémantique particulière:
-
-
‘.‘ : n’importe quel caractère sauf le point
-
‘*‘ : on peut avoir le caractère autant de fois qu’on veut (de 0 à n fois)
-
‘[]‘ : permet de spécifier qu’on veut un seul des deux caractères spécifié dans l’ensemble, i.e. entre crochets
-
‘?‘ : le point d’interrogation est un opérateur d’optionnalité qui porte sur le caractère qui le précède, et qui indique qu’on peut avoir ce caractère dans le motif O ou 1 fois
-
‘+‘ : comme le ?, cet opérateur porte sur le caractère qui le précède et indique qu’on peut l’avoir au moins une fois dans le motif
-
‘{3, }‘ : précise qu’on veut au moins 3 occurrences du motif qui précède, et au plus autant d’occurrences que possible; si on avait eu {3, 5}, on aurait recherché au moins 3 occurrences, au plus 5, du motif recherché
-
‘( )‘: le fait de parenthéser une partie du motif permet de limiter la portée d’un opérateur, i.e. appliquer un opérateur sur le contenu de la parenthèse
-
‘|‘ : le pipe permet de signifier qu’on veut filtrer soit ce qui est à gauche soit ce qui est à droite du pipe; par exemple ‘clé|clef‘ signifie qu’on veut filter soit ‘clé‘ soit ‘clef‘. Attention, ici, le pipe est un opérateur d’expression régulières, ce n’est pas le pipe d’empilement de commandes!
-
exemple : egrep » .*isme » mots.txt = on obtient tout les mots finissant par ‘-isme’ contenus dans le fichier mots.txt
ATTENTION > * > | : règle de précédence (concaténation > étoile > optionnalité) qui spécifie un ordre de lecture dans les expressions régulières
-
-
‘\‘: c’est l’opérateur de déspécialisation, qui, appliqué aux autres opérateurs d’expressions régulières, permet de les prendre en compte dans le motif en tant que caractère et non pas en tant qu’opérateurs; autrement dit, \ permet de ne pas interpréter les opérateurs si jamais les caractères des opérateurs figurent dans un motif d’expression régulière
-
‘$‘ : fin de ligne
-
‘^‘ : début de ligne
-
‘[^a-z]‘ : on recherche toutes les suites de caractères sauf celles qui suivent (i.e. celles en minuscules); le chapeau a donc une valeur différente en fonction de son contexte
-
‘\b‘ : permet de rechercher le début ou la fin d’une chaîne de carcatère comprise entre deux blancs (i.e. permet de spécifier le début ou la fin d’un mot)
-
Voyons quelques options de la commande egrep :
-
-
l’option egrep -v permet de filtrer toutes les lignes qui ne contiennent pas le motif spécifié
-
On peut combiner egrep avec d’autres commandes, par exemple wc -l, qui permet de compter les lignes : on peut empiler les commandes avec l’opérateur ‘|‘.
Si on empile egrep [motif] [fichier] | wc -l , on obtient le nombre de lignes qui contiennent le motif spécifié à extraire du fichier.
-
-
-i : on recherche le motif qu’il sans contrainte sur la casse
-
Exemple : egrep -v »^$ » mots.txt permet de filter les lignes vides du fichier
Faire un man egrep donnera des informations plus précises.
Pour davantage d’exemples pratiques avec les expressions régulières, je vous invite à consulter la page suivante :
où sont présentés un ensemble d’exercices de prise en main des opérateurs d’expressions régulières, entre autres.
Travail à faire pour le projet barrage
Il faut maintenant modifier le script pour obtenir, dans le tableau:
Voilà pour la sénace d’aujourd’hui!
A bientôt pour les étapes ultérieures!
Marguerite
leave a comment