Les expressions régulières de base utilisées sous Bash

Voici une documentation comparant les expressions régulières de base (BRE, Basic Regular Expressions) et les expressions régulières étendues (ERE, Extended Regular Expressions) utilisées sous Bash, notamment avec des outils comme grep, sed, et awk.

Métacaractères communs aux BRE et ERE

MétacaractèresSignification
.Correspond à n’importe quel caractère.
*Correspond à 0 ou plusieurs occurrences du caractère ou groupe précédent.
^Correspond au début d’une ligne.
$Correspond à la fin d’une ligne.
[...]Correspond à un caractère parmi ceux listés entre les crochets.
[^...]Correspond à un caractère non listé entre les crochets.
\Échappe un métacaractère (le traite comme un caractère littéral).

Différences entre BRE et ERE

FonctionnalitéBRE (Basic Regular Expressions)ERE (Extended Regular Expressions)
Groupement\(…\)(…)
Alternance (OU)« foo\|bar »« foo|bar »
Quantificateurs\{n\} (exactement n fois){n}
\{n,\} (au moins n fois){n,}
\{n,m\} (entre n et m fois){n,m}
Optionnel\? (doit être échappé)?
Un ou plusieurs\+ (doit être échappé)+

Exemples d’utilisation sous Bash

Avec grep

  • BRE (par défaut avec grep):
grep "a\{2\}" fichier.txt  # Cherche "aa"
grep "\(red\|blue\) car" voitures.txt # Chercher "red car" ou "blue car"
  • ERE (avec l’option -E):
grep -E "a{2}" fichier.txt  # Cherche "aa"
grep -E "(red|blue) car" voitures.txt # Chercher "red car" ou "blue car"
grep -E "erreur|avertissement" fichier.log # Rechercher des lignes contenant soit "erreur" soit "avertissement"
grep -E "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" fichier.txt # Ce motif est une expression régulière qui décrit une adresse IP version 4 (IPv4)

Avec sed

  • BRE (par défaut avec sed):
sed -n '/a\{2\}/p' fichier.txt  # Affiche les lignes contenant "aa"
  • ERE (avec l’option -E ou -r):
sed -E -n '/a{2}/p' fichier.txt  # Affiche les lignes contenant "aa"

Avec awk

  • ERE (par défaut avec awk):
awk '/a{2}/ {print}' fichier.txt  # Affiche les lignes contenant "aa"

Cas particuliers et bonnes pratiques

  • Échappement : En BRE, les métacaractères ?, +, {, |, (, ) doivent être échappés avec \.
  • Portabilité : Les ERE sont plus lisibles et recommandées pour les scripts complexes.
  • Outils: grep -E, sed -E, et awk utilisent les ERE par défaut ou via des options.

Exemple complet

BesoinBRE (grep/sed)ERE (grep -E/sed -E)
Trouver « foo » ou « bar »grep « foo\|bar »grep -E « foo|bar » fichier.txt
Trouver 3 chiffres consécutifsgrep « [0-9]\{3\} »grep -E « [0-9]{3} »
Trouver un mot optionnelgrep « colou\(r\)\? »grep -E « colou(r)? »

Résumé

  • BRE : Nécessite l’échappement de nombreux métacaractères.
  • ERE : Syntaxe plus intuitive, proche des langages modernes (Python, Perl, etc.).

Exemples d’utilisation de * avec BRE et ERE

Voici des exemples concrets d’utilisation du métacaractère * avec les expressions régulières de base (BRE) et les expressions régulières étendues (ERE), notamment avec des outils comme grep -E, sed -E, et awk.

Exemples avec grep (par défaut en BRE)

BesoinCommande BRE (avec grep)Explication
Trouver les lignes contenant « ab* »grep « abc\* » fichier.txtLe \* signifie le caractère *.
Trouver les lignes contenant un « a » suivi de n’importe quel nombre de caractèresgrep « a.* » fichier.txt.* signifie « n’importe quel nombre de caractères après ‘a' ».
Trouver les lignes contenant « colou » suivi optionnellement de « r »grep « colour\? » fichier.txt\? signifie « 0 ou 1 occurrence de ‘r' ».

Exemples avec ERE (Extended Regular Expressions)

BesoinCommande ERE (avec grep -E)Explication
Trouver les lignes contenant « ab » suivi de 0 ou plusieurs « c »grep -E « abc* » fichier.txtc* signifie « 0 ou plusieurs ‘c' ».
Trouver les lignes contenant un « a » suivi de n’importe quel nombre de caractèresgrep -E « a.* » fichier.txt.* signifie « n’importe quel nombre de caractères après ‘a' ».
Trouver les lignes contenant « colou » suivi optionnellement de « r »grep -E « colour? » fichier.txt? signifie « 0 ou 1 occurrence de ‘r' ».

Sources : Le Chat Mistral

https://chat.mistral.ai/chat

Documentation sur l’installation des serveurs.

Retour en haut