Académique Documents
Professionnel Documents
Culture Documents
)
4.1. Ou alors si. Grep de la commande d'dition g/RE/p 'globally search for RE and print it'
ou RE est un raccourci pour RegularExpression.
La commande grep chane fichier permet d'extraire de fichier toutes les lignes contenant
chane. (Ca vous parat familier? Qu'est-ce que a vous rappelle?)
Si chane contient des espaces, elle doit tre encadre par deux guillemets simples. Ainsi,
grep to Sha
grep 'o b' Sha
ou
grep t Sha, ou
grep ' ' Sha
afficheront les deux lignes to be et or not (qui contiennent toutes deux aussi bien un t
qu'un espace). Sachant que grep chane fichier peut tre redirige vers (ventuellement, le
mme) fichier l'aide de >>, en dduire la commande permettant de transformer en une
seule tape le contenu de Sha en
to be
or not
to be
et
ne donnent pas les mmes rsultats. Afin que la commande grep ignore la diffrence entre
Majuscule et minuscule, utilisez loption i.
grep -i science science.txt
Afin de chercher une phrase, ou un mot en entier, vous devez lentourer de guillemets simples
ou doubles :
grep i eruption volcanique total.txt
grep i volcan total.txt
Afin dafficher toutes les lignes qui ne contiennent pas un motif, utiliser loption v. On
pourrait ainsi combiner plusieurs commandes grep la suite laide de | :
grep -i volcan VOLCFR.txt | grep -v Rittman | more
Loption n permet dafficher le numro de ligne dans le fichier auquel on a trouv le motif
recherch.
grep i n VOLCFR.txt
Loption c permet dafficher uniquement le nombre total de lignes correspondant au motif.
grep c volcan science.txt
est quivalente
grep volcan.txt | wc l
On peut combiner plusieurs options la fois ainsi :
grep -ivc science science.txt est la mme chose que
grep i v c science science.txt
Loption l permet dafficher juste les noms des fichiers dans lesquels un motif apparat, sans
afficher les occurrences trouves.
Loption m NUM permet de sarrter aprs NUM solutions trouves.
grep m 20 volcan VOLCEN.txt
nous permet de limiter notre recherche 20 rsultats.
Loption H permet davoir le nom du fichier ou lon cherche un motif en tte de ligne :
grep H volcan corpus_EN/*.txt
L'argument expression est ce qu'on appelle une expression rgulire, une suite de
symboles dcrivant un ensemble (fini ou infini) de mots. Noter que cet argument est
encadr par des guillemets doubles.
L'argument -E indique que cette expression est une expression tendue, par opposition
aux expressions dites de base, dont la syntaxe est diffrente de celle dcrite ci-dessous
(mais certainement pas plus basique).
En sortie, grep renvoie toutes les lignes de fichier contenant au moins un mot dcrit
par expression.
Explication
retrouve la lettre a
[az]
[AZ]
[09]
[0123456789]
[aeiouAEIUO]
[aeiouAEIOU]
le dbut de ligne
la fin de ligne
une suite quelconque doccurrences de x (0 ou plus)
x*
x+
x{n, m}
x?
x|y
o b.lle - > correspond aux chanes de caractres balle, belle, bulle, bille mais
aussi b.lle, bplle, b3lle etc.
o [ab2X] dcrit l'ensemble de caractres a,b,2,X et l'expression x[ab2X]y dcrit les
chanes xay, xby, x2y, xXy
o [a-c],[0-38] et [a-d5-8X-Z] dsignent respectivement l'ensemble de caractres
(n'importe quel caractre de l'ensemble) a,b,c, un des caractres numriques 0,1,2,3,8
(les caractres dans l'intervalle 0-3 plus le caractre 8) et un des caractres suivants :
a,b,c,d,5,6,7,8,X,Y,Z
o Il est possible d'exclure un ensemble de caractres d'une requte l'aide du caractre
^ : [^0-9] dcrit n'importe quel caractre qui n'est pas un chiffre, [^ ] dcrit n'importe
quel caractre qui n'est pas un espace, etc.
o Les caractres ^ et $ permettent de retrouver un motif en dbut respectivement en fin
de ligne.
NOTE : le caractre ^ n'a la signification de non qu'entre crochets, comme ci-dessus.
QUESTION : Quelle est la diffrence entre [^abc] et ^[abc] ?
o X* dsigne une suite quelconque doccurrences de X (0 ou plus)
o X+ dsigne au moins une occurrence de X (1 ou plus)
o X? dsigne une occurrence optionnelle de X (0 ou 1)
o X{n, m} entre n et m occurrences de x (au moins n, au plus m)
o Enfin le caractre | (ou logique) permet de retrouver des expressions rgulires
alternatives : chats|chiens|souris
NOTE : tant donn que les guillemets (" ou ') font partie de la syntaxe de la commande
grep, afin de les inclure dans une commande, et les caractres spciaux *,+,.,?, [,], {,} ont
un rle dans la syntaxe des expressions rgulires, on doit les protger avec un \
La plupart des concordanciers (wall, IMS Corpus Workbench, Unitex) intgrent la possibilit
d'effectuer des requtes en utilisant des expressions rgulires. Mais ce qui nous intresse
dans le cadre de ce cours est leur utilisation pour des requte et substitutions par un nombre
d'utilitaires Unix : grep et sed.
Exemple
Explication
grep gh
grep -E con
grep -E ing$
grep v gh
grep v -E con
grep v -E ing$
grep -E [AZ]
grep -E [AZ]
grep -E [AZ]$
grep -E [AZ]*$
grep -E [aeiouAEIOU]
grep -E [aeiouAEIOU]
grep -E [aeiouAEIOU]$
grep i -E [aeiou]
grep i -E [aeiou]
grep i -E [aeiou]$
grep i -E [aeiou]
Grep i -E [aeiou]$
Grep i -E [aeiou].*[aeiou]
Grep
[aeiou]*[aeiou][aeiou]*$
Quelle commande taper pour obtenir la liste des urls se trouvant dans cette page ?
Trouver les trois commandes permettant d'afficher la liste des fichiers du rpertoire courant
faisant :
Tester ces commandes dans le rpertoire /usr/bin. Si une liste est trop longue, vous pouvez
rediriger une nouvelle fois la sortie de la commande correspondante vers more.
d/ Exercices : grep, sort, uniq, cut, head, tail, wc
De retour dans le rpertoire Linux/Exos, choisir un terme chercher dans les fichiers corpus.
(par exemple volcan). Trouver laide de la commande grep une suite dau maximum 35
caractres, suivis du motif volcan , suivis dune autre suite dau maximum 35 caractres.
Utilisez loption l pour nafficher que le motif recherch. Le rsultat devrait ressembler
une concordance KWIC (Key Word in Context)
Combien y a-t-il de lignes vides dans le corpus ?
Trouver les mots dans le corpus anglais finissant en ing.
Y a-t-il des symboles * dans ce corpus ?
Un des mots true, True,TRUE est-il prsent aussi ?
Combien de lignes contiennent deux ou plus occurrences du mot volcan? (le mot volcan, mais
pas ses drivs). NOTE : afin de trouver les occurrences du mot volcan, le rechercher prcd
et suivi de blancs (espace, retour chariot, ou tab - vous pouvez utiliser le raccourci \b) ou
ponctuation forte : .!?
Combien de lignes contiennent exactement deux occurrences du mot volcan (pas plus)?
Combien de lignes comportent le motif volcan?
Combien de lignes contiennent le motif volcan mais pas les drivs de erupt?
Combien de lignes contiennent le motif volcan spar de erupt par pas plus de 10 caractres.
(le motif erupt prcde ou suit le mot volcan).
Constituer la liste trie des mots composs dans votre corpus. Chacun des composants de ces
mots doit faire au moins 2 caractres. Constituez maintenant la liste de premiers composants
de ces mots (liste des mots qui prcdent le -).
e/ sur le site http://www.eila.jussieu.fr/~avolansk, tlcharger dans Linux/Exos le fichier html
correspondant au lien
http://bowland-files.lancs.ac.uk/monkey/ihe/linguistics/contents.htm
-
obtenez la liste des balises html de ce document. Comment obtenir une liste de ces
balises ou chacune apparat une seule fois?
Quelle commande taper pour obtenir la liste des URLs se trouvant dans cette page ?
ces composants? Complter la commande grep avec une autre commande grep qui permet
de liminer de la requte ce patron (en utilisant l'oprateur | ).
EXERCICE i : deux options utile de la commande sort. L'option -f permet la commande
sort d'ignorer la diffrence entre majuscules et minuscules. L'option +1 par exemple permet de
faire le tri sur le premier champs d'un fichier organis en colonnes. Exemple : trouver
l'expression rgulire permettant de retrouver les occurrences de volcan suivi d'un autre mot
et uniquement ces deux mots (revoir les options de la commande grep). Trouver les 30 mots
qui apparaissent le plus souvent droite du motif volcan en ignorant la diffrence entre
minuscules et majuscules.
EXERCICE j : En utilisant les commandes head/tail, imprimez les lignes 25 75 de votre
corpus. Mettre le rsultat dans un fichier appel petit.txt. Combien de lignes/mots/caractres
fait petit.txt?
EXERCICE k : extraction de termes trs simplifie. Quelques options intressants de la
commande grep. On a vu lors de la dernire squence comment extraire une liste de
frquence de mots ou de deux mots partir de vos corpus. tant donn que vos corpus ne sont
pas tiquettes, on n'a pas moyen de prciser qu'on ne cherche que les suites Nom Nom ou
Nom de Nom, ou alors qu'on ne s'intresse pas aux mots trs frquents comme le, the, il, etc.
Afin de trouver des mots-cl de vos corpus, ou des termes, on peut construire des listes
d'exclusion (stop lists) comportant ces mots et ne pas les compter.
Construisez la liste d'exclusion de mots fonctionnels les plus frquents partir de la liste des
100 mots les plus communs de votre corpus (comme vu en cours la dernire fois ; utiliser la
commande cut pour ne garder que les mots, sans leur frquence). Mettez-la dans un fichier
exclusion.txt l'aide de l'oprateur >. Si ncessaire (si la liste contient de mots cl que vous ne
voudriez pas exclure), vous pouvez l'diter avec l'diteur gedit. Vous pourrez complter et
mettre jour cette liste plus tard.
Maintenant on peut essayer de construire la liste de mots les plus frquents de votre corpus en
excluant les mots de cette liste. Les options de grep qui vont nous permettre d'obtenir cette
nouvelle liste sont :
-v pour imprimer les lignes de correspondant pas un patron.
-f dit la commande grep de lire le patron chercher dans un fichier (en l'occurrence
exclusion.txt) et non pas sur la ligne de commande.
-x l'option dit grep que le motif recherch doit correspondre toute la ligne, non seulement
une partie. Cette option est ncessaire afin d'viter d'liminer des mots comportant la souschane to, the, etc. comme par exemple touch or therapy.
Utiliser ainsi la commande grep -Evix -f exclusion.txt aprs avoir segment le texte en un
token par ligne, mais avant de compter le nombre d'occurrences.