From 2b4d6434bf41db0befe832114c89f273276eb8d6 Mon Sep 17 00:00:00 2001
From: "David A. Madore" <david+git@madore.org>
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

