04-Expressions Regulieres

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 43

Les expressions

régulières

Laboratoire Linux
Les expressions régulières

Objectifs de ce module
En suivant ce module vous allez :
 Voir comment utiliser les
expressions régulières.
 Découvrir Grep.
 Découvrir Sed.
Les expressions régulières
Plan du module
Voici les parties que nous allons aborder:

 Les expressions régulières. La


puissance d'un motif.
 Grep. Pour faire des recherches.

 Sed. L’éditeur de flux.


Les expressions régulières

Qu’est-ce qu’une expression régulière ?


Les expressions régulières

Plan de la partie
Voici les chapitres que nous allons aborder :

 Introduction
 Correspondance et substitution
 Motifs
 Ensembles
 Quantificateurs
 Début et fin de chaînes
Les expressions régulières

Introduction
Les expressions régulières :

 Travaillent sur du texte :


 Correspondance (pattern matching)
 Substitution
 Sont largement utilisées :
 Grep
 Sed
 Awk
 Perl
 …
Les expressions régulières

Correspondance et substitution
La syntaxe de référence (PERL) :

 Correspondance :

/regexp/

 Substitution :

s/regexp1/regexp2/
Les expressions régulières

Correspondance et substitution
Processus :
Définition de
l’expression
régulière
Remplacement
de l’expression Définition de la
dans la chaîne
chaîne
par une nouvelle
Recherche de
l’expression
régulière dans
Retourne la
la chaîne
position de
l’expression dans
la chaîne
Les expressions régulières

Motifs
Dans une expressions régulière :
 Chaque caractère vaut pour lui-
même :
 /a/ recconaîtra 'Marine' mais pas
‘Arriver'

 Les caractères spéciaux échappés


grâce à un anti-slash :
 /, \, |, (, ), [, [, {, }, ^, $, *, +, ?, .
Les expressions régulières

Motifs
Dans une expressions régulière, il y a certains codes
spéciaux usuels :

\n Saut de ligne

\r Retour chariot

\t Tabulation

\f Saut de page

\e Echappement
Les expressions régulières

Motifs
Exemple d’utilisation des codes spéciaux :

s/\r//

 Supprime les retours à la ligne

m/Enset \n Rabat/

 Correspond à
 Enset
Rabat
 Et non Enset Rabat
Les expressions régulières

Ensembles
Les regroupements :

 [caractères] matche un caractère


parmi ceux entre crochets
 [abcd] reconnaîtra les lettres
a, b, c ou d
 'avion'mais pas 'ABriCot',
ni 'guADeloupe'
Les expressions régulières

Ensembles
Les intervalles :

 L’opérateur utilisé est le '-'.


 [a-z] correspond aux lettres minuscules de l'alphabet.
 [a-zA-Z] correspond à toutes les lettres de l'alphabet.
 L’inclusion s’effectue dans l’ordre de la table ASCII.
 Le tiret vaut pour lui-même en début ou en fin
d’ensemble.
 [0-9a-zA-Z-] ou [-0-9a-zA-Z]
Les expressions régulières

Ensembles
L’alternative :

 L’opérateur est le '|'.


 Souvent utilisé pour les suffixes ou
préfixes :
 /(Free|Open|Net)BSD/
 Reconnaît FreeBSD,
OpenBSD et NetBSD.
Les expressions régulières

Ensembles
Quelques précisions :

 Un ensemble peut être inclus


n’importe où dans une
expression régulière :
 /to[0-9]to/
 L’accent circonflexe en début
d’intervalle signifie 'tout sauf' :
 /[^0-9]info/ ne matchera pas
0info, ni 5info, ...
Les expressions régulières

Ensembles
Dans une expressions régulière, il y a des ensembles
prédéfinis :

\d Un chiffe, équivaut à [0-9]

\D Tout sauf un chiffre équivaut à [^0-9]

\w Alphanumérique : [0-9a-zA-Z_]

\W Non alphanumérique :[^0-9a-zA-Z_]

\s Un espacement : [ \n\t\r\f]

\S Tout sauf un espacement : [ ^ \n\t\r\f]


Les expressions régulières

Quantificateurs
Les quantificateurs :
 Possibilité de regrouper plusieurs caractères en un
motif grâce au parenthèses :
 /ab*/ matchera une chaîne contenant 'a' suivi de 0
ou plusieurs 'b'.
 /(ab)*/ matchera une chaîne contenant 'ab' 0 ou
plusieurs fois.

 Le symbole '.' représente 1 caractère, peut importe


lequel :
 /l.nux/ reconnaît 'linux' mais pas 'liinux'.
Les expressions régulières

Quantificateurs
Dans une expressions régulière, on peut utiliser des
quantificateurs standards :

* 0 fois ou plus

+ 1 fois ou plus

? 0 ou 1 fois

{n} Exactement n fois

{n,} Au moins n fois

{,n} Au plus n fois

{m,n} Entre m et n fois


Les expressions régulières

Début et fin de chaînes


Les début et fin de chaînes sont :

 Détectés par '^' et '$'.


 '^' correspond au début d’une chaîne.
 '$' correspond à la fin d’une chaîne.
 /^Linux.*Torvalds$/ matchera toute chaîne
commençant par 'Linux' et se finissant par
'Torvalds'.
Les expressions régulières

Pause-réflexion

Avez-vous des questions ?


Les expressions régulières

Pause-réflexion
Quelles sont les 2 grandes fonctions des expressions
régulières ?

Pattern matching

Corrélation

Substitution

Gestion des dépendances


Les expressions régulières

Grep
Grep

Plan de la partie
Voici les chapitres que nous allons aborder :

 Rappel
 Utilisation
 Exemple
Grep

La commande Grep
 Grep permet de faire des recherches dans un fichier.
Syntaxe générale :

grep [options] regexp fichier

Options :

-E Interprète l’expression regex

-c Compte le nombre de résultat

-h N’affiche pas le fichier quand il y en a plusieurs

-i Insensible à la casse

-n Préfixe le numéro de ligne

-v Inverse l’affichage
Grep

Exemple
Afficher les commentaires d’un fichier :

grep ‘^#’ fichier

Reconnaître si un nom d’utilisateur est valide :

grep ‘[a-z_][a-z0-9_]*’
Grep

Pause-réflexion

Avez-vous des questions ?


Les expressions régulières

Sed

Stream Editor
Sed

Plan de la partie
Voici les chapitres que nous allons aborder :
 La commande Sed
 Afficher et supprimer
 Remplacer
 Ajouter et enregistrer
 Scripts Sed
 Echappement
Sed

La commande Sed
 Sed permet de manipuler du texte.
 Différentes fonctions :
 Ajouter
 Supprimer
 Remplacer
 Ajouter
 Afficher
 …
Sed

La commande Sed
Fonctionnement :

Données

Données
SED éditées

Actions
Sed

La commande Sed
Syntaxe générale :

sed [options] ‘commande’ fichier

Exemple : Afficher les 4 premières lignes d’un fichier

sed –n ‘1,4p’ /etc/passwd

Options :

-n N’afficher que les lignes correspondantes

-f Utiliser un script

-e Utiliser plusieurs commandes


Sed

Afficher et supprimer
Syntaxe générale d’une commande (pattern matching) :

/regexp/action

Exemples :

Action Description

d Supprimer

p Afficher
Sed

Afficher et supprimer
Exemples :

 /Hello/d : Supprime les lignes


contenant le mot "Hello".
 /^[Ll]inux/!d : Supprime les
lignes ne commençant pas par
"Linux" ou "linux".
 /[a-zA-Z0-9]$/p : Affiche les
lignes finissant par un
caractère alphanumérique.
Sed

Remplacer
Syntaxe générale d’une commande (substitution) :

s/regexp_old/regexp_new/action

Exemples :

 s/[Uu]nix/Linux/ : Remplace la première occurrence


de "Unix" ou "unix" par Linux.
 s/[0-9]//g : Supprime tous les chiffres.
Sed

Ajouter et enregistrer
Ajout :

s/regexp/& ajout/

Enregistrement :

s/regexp_old/regexp_new/w fichier

Exemple :

 s/^#[^!].*$/& v1\.0/gw file1 : Ajoute ‘v1.0’ à toutes les


lignes commençant par ‘#’ qui ne sont pas un
shebang et enregistre le résultat dans file1.
Sed

Scripts Sed
Syntaxe générale :

sed [options] –f script fichier

Exemple :
 Remplacer les occurences de "emacs" par "vi".
 Supprimer la première occurrence de "Gates", etc …

#! /usr/bin/sed –nf

s/emacs/vi/g
/[Gg][Aa][Tt][Ee][Ss]/d
Sed

Echappement
Le caractère '\'
 Permet d’échapper les
caractères spéciaux.
 Exemple :
s/\/usr\/src\/linux/\$SRC_DIR/g

Les séparateurs :

 Possibilité d’utiliser '@' ou '#'


comme séparateur.
 Exemples :
s@/usr/src/linux@\$SRC_DIR@g
Sed

Pause-réflexion

Avez-vous des questions ?


Sed

Pause-réflexion
Relier les actions à leurs descriptions :

supprimer Toutes les occurences

afficher d

g p

ajout w

enregistrement &ajout
Les expressions régulières
Résumé du module

Les
expressions
régulières

Sed
Grep
Les expressions régulières

Pour aller plus loin…


Si vous voulez approfondir vos connaissances:
Publications Modules de cours

Linux
**ListeMCU
de modules de cours
connexes.

www.dunod.com
**URL pour obtenir l’ouvrage.

Sites web Conférences

www.supinfo.com **Liste de conférences ou


www.labo-linux.org meetings.
www.labo-mandriva.com
Félicitations
Vous avez suivi avec succès le
module de cours n°04
Les expressions régulières
Les expressions régulières
Fin

 Afin d'assimiler l'utilisation des expressions régulières, il est conseillé


de pratiquer le plus possilbe

Vous aimerez peut-être aussi