From 2b4d6434bf41db0befe832114c89f273276eb8d6 Mon Sep 17 00:00:00 2001 From: "David A. Madore" Date: Fri, 9 Dec 2016 13:44:14 +0100 Subject: Test various egrep features. --- tp1.tex | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) (limited to 'tp1.tex') diff --git a/tp1.tex b/tp1.tex index fd19232..8a22749 100644 --- a/tp1.tex +++ b/tp1.tex @@ -133,6 +133,10 @@ renvoie les lignes de \texttt{monfichier} qui commencent par \texttt{x} (en début de ligne) suivi d'un nombre quelconque de \texttt{y} et d'un \texttt{z} (en fin de ligne). +% +% +% + \exercice Le fichier \texttt{\char"7Emadore/inf105/liste1} contient 25 mots sur @@ -181,6 +185,62 @@ modulo $3$ ? renvoie $11$. \end{corrige} +% +% +% + +\exercice + +Le fichier \texttt{\char"7Emadore/inf105/liste2} contient des mots +(tous distincts) sur l'alphabet ASCII ; ces lignes peuvent contenir, +notamment, des espaces et des caractères spéciaux pour \texttt{egrep}. + +(a) Combien de lignes ne contiennent que des lettres de l'alphabet +latin (de A à Z sans diacritiques, majuscules comme minuscules) ? (On +rappelle pour cela la syntaxe « \texttt{[abc]} » d'\texttt{egrep} qui +permet de désigner un caractère parmi \texttt{a}, \texttt{b} et +\texttt{c} (c'est donc synonyme de \texttt{(a|b|c)} mais uniquement +pour des caractères individuels) et « \texttt{[a-f]} » qui désigne un +caractère entre \texttt{a} et \texttt{f}.) Combien de lignes +contiennent un caractère autre que les lettres de l'alphabet latin ? +(On rappelle que « \texttt{[\char"5Ea-f]} » permet de désigne un +caractère n'appartenant pas à l'intervalle entre \texttt{a} et +\texttt{f}.) + +(b) Combien de lignes commencent par un \texttt{a} et finissent par un +\texttt{z} ? (On rappelle pour cela la syntaxe « \texttt{.} » +d'\texttt{egrep} qui permet de désigner un caractère quelconque.) + +(c) Combien de lignes contiennent une astérisque ? (On rappelle qu'on +peut « échapper » un caractère spécial pour \texttt{egrep} en le +faisant précéder d'un backslash (\texttt{\char"5C}).) Au moins deux +astérisques ? Exactement deux astérisques ? + +(d) Combien de lignes contiennent exactement six caractères ? (On +rappelle les syntaxes « \texttt{$r$\{$n$\}} » et +« \texttt{$r$\{$m$,$n$\}} » et « \texttt{$r$\{$m$,\}} » et +« \texttt{$r$\{,$n$\}} » pour chercher respectivement exactement $n$, +entre $m$ et $n$, au moins $m$, et au plus $n$ occurrences de +l'expression régulière $r$.) Entre quatre et huit caractères ? Au +moins trois fois le caractère \texttt{u} ? Exactement six fois le +caractère \texttt{u} ? + +\begin{corrige} +(a) \verb=egrep -c '^[A-Za-z]*$'= pour uniquement des lettres, et + \verb='[^A-Za-z]'= pour un caractère qui n'est pas une lettre. + +(b) \verb=egrep -c '^a.*z$= + +(c) \verb=egrep -c '\*'= pour une astérisque, \verb='\*.*\*'= pour au + moins deux, et \verb='[^*]*\*[^*]*\*[^*]*'= pour exactement deux + astérisques. + +(d) \verb=egrep -c '^.{6}$'= pour exactement six caractères, + \verb='^.{4,8}$'= pour entre quatre et huit caractères, + \verb='(u.*){3,}'= pour au moins trois fois \texttt{u}, et + \verb='^[^u]*(u[^u]*){6}$'= pour exactement six \texttt{u}. +\end{corrige} + % % -- cgit v1.2.3