un mot sur le web...

Les outils

wget / lynx / egrep / sed / minigrepmultilingue

wget

wget est un programme qui va nous permettre d'enregistrer chacune des pages de notre liste d'URL.
La syntaxe est la suivante :

wget [OPTION] [URL]

#enregistre dans le répertoire courant les URL trouvées dans url.txt
wget -i ./url.txt

#enregistre sous le nom ./google.html la page d'accueil de Google Japan
wget -O ./google.html http://www.google.co.jp/

Pour plus d'informations : http://www.gnu.org/software/wget/manual/

lynx

lynx est un navigateur internet en mode texte. L'option -dump va nous permettre d'enregistrer sous forme de texte brut les pages que nous aurons aspirées avec wget.
La syntaxe n'est guère différente :

lynx [OPTION] [URL ou FICHIER]

#enregistre la page ./google.html sous forme de texte brut (./google.txt)
lynx -dump ./google.html > ./google.txt

#l'option -nolist permet de ne pas afficher les liens dans le dump
lynx -dump -nolist ./google.html > ./google.txt

Pour plus d'informations : http://lynx.isc.org/

egrep (aka grep -E)

La commande egrep permet de chercher une expression régulière dans un fichier ou sur le flot d'entrée.
Parmi les options que propose le programme nous utiliserons :

-i, --ignore-case
ignorer la casse
-n, --line-number
afficher les numéros des lignes contenant la forme recherchée
-o, --only-matching
n'afficher que la partie de la ligne correspondant à la forme recherchée
-c, --count
n'afficher que le nombre de lignes où apparait la forme recherchée
-B[NUM], --before-context=[NUM]
afficher les [NUM] lignes qui précèdent celle où se trouve la forme recherchée
-A[NUM], --after-context=[NUM]
afficher les [NUM] lignes qui suivent celle où se trouven la forme recherchée
egrep [OPTION] "MOTIF" [FICHIER]

#compte le nombre de lignes où la forme "y!" (ou "Y!") apparait
egrep -i -c "y\!" ./yahoo.txt

Problème rencontré (sous Cygwin) : un bug empêche l'option -i de fonctionner en même temps que l'option -o. Dans l'exemple ci-dessous, le programme va tenir compte de la casse du motif :

#compte le nombre d'occurrences de la chaine "nature" dans un fichier texte
egrep -o -i "(\b)natures?(\b)" ./monfichier.txt | egrep -i -c "(\b)natures?(\b)"

Pour y remédier, nous devons spécifier toute la combinatoire :

#compte le nombre d'occurrences de la chaine "nature" dans un fichier texte
egrep -o "(\b)(n|N)(a|A)(t|T)(u|U)(r|R)(e|E)(s|S)?(\b)" ./monfichier.txt | egrep -i -c "(\b)natures?(\b)"

Pour plus d'informations : http://www.gnu.org/software/grep/

sed

sed est un programme de traitement de données textuelles. La commande s (substitute) permet de procéder à des remplacements. Le flag g (global) applique le traitement à toutes les occurrences, i permet d'ignorer la casse.

sed s/[EXP1]/[EXP2]/[FLAG]

#remplace "paris" par "Paris"
sed s/paris/Paris/

#remplace toutes les occurrences de "yahoo" (et "Yahoo") par "Google"
sed s/yahoo/Google/gi

Pour plus d'informations: http://www.gnu.org/software/sed/sed.html

minigrepmultilingue

minigrepmultilingue est un programme écrit en Perl qui permet d'extraire d'un fichier, dont on connait le codage, un motif et son contexte. Nous l'utiliserons pour travailler sur les dumps des pages japonaises codés en UTF-8.

perl minigrepmultilingue.pl [OPTION] "CODAGE" [FICHIER] [MOTIF]

#exemple proposé sur la page de minigrepmultilingue
perl mini-grep-multilingue.pl "UTF-8" RU_Convention_UTF8.txt motif.txt

J'ai apporté quelques modifications à la version 2.1 du programme, de manière à avoir :

  1. Changement de l'enrichissement typographique pour accorder le fichier de sortie au site web.
  2. Indication, dans le fichier de sortie, du nombre d'occurrences de la forme recherchée.
  3. Renvoie d'une valeur (0 ou 1) pour signaler au script la présence (ou l'absence) de la forme recherchée.
  4. Obligation pour l'utilisateur d'indiquer au programme un nom de fichier de sortie.

(téléchargement : minigrepmultilingue-2.1.pl)

Pour plus d'informations : http://www.cavi.univ-paris3.fr/ilpga/ilpga/tal/cours/minigrepmultilingue.htm

retour en haut
©2008 Pierre Marchal (INaLCO)