Aide linux expression rationnelle

Fermé
kelkun - 18 nov. 2011 à 09:46
mamiemando Messages postés 33401 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 28 novembre 2024 - 19 nov. 2011 à 02:34
Bonjour,

Etudiant en informatique je dois faire un tp linux mais j'ai du mal à tout assimilé. Est-ce que quelqu'un pourrait m'expliquer chaque manip à faire de sorte que je comprenne mieux et que je sois prêt pour mon évaluatoin s'il vous plait ?

Rendez-vous dans le répertoire /usr/include où vous rechercherez, dans les fichiers *.h les lignes
correspondant aux motifs suivants
A - Les lignes commençant par une minuscule. Une fois l'expression trouvée et testée vous
vérifierez le résultat en ajoutant un tube et un second grep recherchant les lignes commençant par
autre chose qu'une minuscule - normalement, vous ne devriez voir aucune ligne.
B - Les lignes commençant par 3 lettres minuscules et se terminant par 3 caractères autres que des
minuscules.
C - Les lignes ne contenant aucune majuscule. Une fois l'expression trouvée, vous ferez comme en
A pour vérifier votre résultat.
D - La commande grep associée à l'option « -v » permet d'afficher les lignes ne répondant pas au
motif (sélection inverse). Recherchez les lignes ne contenant pas le mot « printf ». Comme en A etC, vérifiez votre résultat.

E - Les lignes comprenant trois caractères, a, b, c, d ou e identiques à la suite (aaa, eee ....)
F - Les lignes comprenant un nombre entier d'au moins 8 chiffres. Pour ce faire, veillez à ce que le
motif reconnu soit bien un nombre, à savoir une suite de chiffres autour de laquelle on trouve un
séparateur : espace, fin de ligne, = ....
G - En utilisant les blocs et rappels de blocs, identifiez les lignes contenant un même mot 3 fois. Un
mot est définit comme une suite de lettres autour de laquelle il y a autre chose que des lettres. Les
mots peuvent être séparés les uns des autres par d'autres mots.
H - Les lignes contenant un nombre compris entre 400 et 450. (450 exclus)
I - Les lignes contenant un nombre réel (suite de chiffres incluant un et 1 seul point)
A voir également:

1 réponse

mamiemando Messages postés 33401 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 28 novembre 2024 7 804
18 nov. 2011 à 09:59
Pour commencer :
https://www.commentcamarche.net/infos/25899-demander-de-l-aide-pour-vos-exercices-sur-ccm/

On peut donc t'expliquer les points de cours des expressions régulières que tu n'as pas compris, répondre à un problème particulier, mais a priori, on n'est pas là pour faire ton exercice à ta place.

Je t'invite à relire ton cours sur les automates et les expressions régulières. Il faut juste comprendre qu'un automate maintient un ensemble d'état connectés par des transitions. On traverse tel ou tel arc en fonction du caractère qu'on lit. Le formalisme des expressions régulières ne sert qu'à donner une chaîne de caractères (pattern) qui décrit cet automate.

Par exemple dans la syntaxe grep : "^a*b$" décrit une chaîne qui commence par une suite de 0 ou plus caractère(s) "a", suivi d'un b et d'un caractère de fin de ligne.

Concrètement tu as donc un sommet initial (appelons-le 0) avec deux arcs sortants :
- un arc qui boucle sur 0 (si le caractère lu est "a")
- un arc qui pointe vers un état 1 (si le caractère lu est "b")
Pour l'état 1, soit tu lis un caractère de fin de ligne et tu passes dans l'état 2, soit pas (et la chaîne ne correspond pas au motif)
L'état 2 est un état final, si on y arrive et qu'on a fini de lire la chaîne, alors cette chaîne correspond au pattern.

La seule chose ensuite qu'il reste à comprendre, c'est à quoi en terme d'automate correspondent les différents méta-caractères (^, $, *....) et tout cela est expliqué dans :

man grep


Bonne chance
1
Mon intention n'été pas qu'on fasse mon exercice ^^
Merci pour m'avoir expliqué je vais essayé avec mon cours.
0
mamiemando Messages postés 33401 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 28 novembre 2024 7 804
19 nov. 2011 à 02:34
Ok parfait :-) Du coup as-tu d'autres questions, ou ton problème est-til résolu ?
0