Tutoriel sur les expressions régulières Linux : exemple de Grep Regex

⚡ Résumé intelligent

Les expressions régulières Linux sont des séquences de caractères spéciales qui permettent de rechercher des données et de faire correspondre des modèles complexes dans des outils tels que grep, sed et vi, en utilisant des formes de base, d'intervalle, étendues et d'expansion d'accolades pour filtrer le texte avec précision.

  • ???? Que sont ils: Les expressions régulières, abrégées en regexp ou regex, décrivent des modèles de texte pour la recherche et la correspondance.
  • 🧩 Ensemble de base : Les symboles tels que . ^ $ * et \ servent à ancrer, répéter et échapper les caractères d'un motif.
  • (I.e. Intervalle: Les accolades telles que {n} et {n,m} contrôlent le nombre de fois où le caractère précédent se répète.
  • Élargi: Avec grep -E, \+ et \? correspondent respectivement à une ou plusieurs occurrences et à zéro ou une occurrence d'un caractère.
  • 🧵 Expansion de l'attelle : Les accolades permettent de générer plusieurs chaînes de caractères à partir d'une séquence ou d'une liste séparée par des virgules.
  • Utilisation : Des outils comme grep, sed, tr et vi utilisent des expressions régulières pour filtrer le texte.
  • 🤖 Aide de l'IA : Les assistants IA et GitHub Copilot peuvent générer, expliquer et déboguer rapidement les modèles d'expressions régulières.

Expressions régulières Linux avec grep — exemples d'expressions régulières basiques, d'intervalles et étendues

Les expressions régulières sont l'une des fonctionnalités les plus puissantes de Linux Outils de texte permettant de faire correspondre, filtrer et transformer des données à l'aide de modèles compacts. Cette page explique les formes de base, d'intervalle et étendue, ainsi que l'expansion des accolades, avec des exemples d'utilisation de grep.

Que sont les expressions régulières Linux ?

Les expressions régulières Linux sont des caractères spéciaux qui facilitent la recherche de données et la correspondance de modèles complexes. Elles sont abrégées en « regexp » ou « regex ». Elles sont utilisées dans de nombreux programmes Linux, tels que : grep, bash, rename, sed, et plus encore.

Types d'expressions régulières

Pour faciliter la compréhension, apprenons les différents types d'expressions régulières une à une. Cette page aborde les expressions régulières de base, d'intervalle et étendues, et se termine par l'expansion des accolades.

Expressions régulières de base

Parmi les commandes couramment utilisées qui fonctionnent avec les expressions régulières, on trouve tr, sed, viet grep. Le tableau ci-dessous répertorie quelques expressions régulières de base.

Symbole Description
. Remplace n'importe quel caractère
^ Correspond au début d'une chaîne de caractères
$ Correspond à l'extrémité d'une chaîne
* Correspond zéro ou plusieurs fois au caractère précédent
\ Représente des caractères spéciaux
() Groupes d'expressions régulières
? Correspond exactement à un caractère

Prenons un exemple. Tout d'abord, exécutez la commande `cat sample` pour afficher le contenu d'un fichier existant, comme indiqué ci-dessous.

Exemple de commande cat affichant le contenu d'un fichier existant dans le terminal

Ensuite, recherchez le contenu contenant la lettre « a ». La capture d'écran ci-dessous montre que grep renvoie toutes les lignes contenant un « a ».

Recherche par grep dans le fichier d'exemple des lignes contenant la lettre a

Le symbole accent circonflexe « ^ » correspond au début d'une chaîne de caractères. L'exemple ci-dessous recherche le contenu commençant par la lettre « a ».

grep avec un accent circonflexe correspondant uniquement aux lignes commençant par la lettre a

Seules les lignes commençant par le caractère « a » sont filtrées. Les lignes ne commençant pas par ce caractère sont ignorées.

Prenons un autre exemple. La capture d'écran ci-dessous montre à nouveau le contenu du fichier d'exemple avant le filtrage par fin de ligne.

Exemple de contenu de fichier affiché avant le filtrage des lignes se terminant par la lettre t

Sélectionnez uniquement les lignes se terminant par la lettre « t » en utilisant l’ancre « $ », comme indiqué ci-dessous.

grep avec une ancre dollar sélectionnant uniquement les lignes se terminant par la lettre t

Expressions régulières d'intervalle

Ces expressions indiquent le nombre d'occurrences d'un caractère dans une chaîne. Elles sont listées ci-dessous.

Expression Description
{n} Correspond exactement au caractère précédent apparaissant 'n' fois
{n,m} Correspond au caractère précédent apparaissant 'n' fois mais pas plus de m
{n, } Correspond au caractère précédent uniquement lorsqu'il apparaît « n » fois ou plus

Par exemple, filtrez toutes les lignes contenant le caractère « p ». La capture d'écran ci-dessous montre les lignes correspondantes.

grep filtrant le fichier d'exemple pour les lignes contenant le caractère p

Vérifiez maintenant que le caractère « p » apparaît exactement deux fois dans une chaîne, l’une après l’autre. La syntaxe est la suivante :

cat sample | grep -E p\{2}

Le résultat de la correspondance d'intervalles est indiqué ci-dessous.

grep -E expression d'intervalle correspondant au caractère p apparaissant exactement deux fois

Remarque : Vous devez ajouter -E avec ces expressions régulières.

Expressions régulières étendues

Ces expressions régulières combinent plusieurs expressions. En voici quelques exemples :

Expression Description
\+ Correspond à une ou plusieurs occurrences du caractère précédent
\? Correspond à zéro ou une occurrence du caractère précédent

Par exemple, recherchez toutes les occurrences du caractère « t ». La capture d’écran ci-dessous montre le résultat.

recherche par grep dans le fichier d'exemple toutes les lignes contenant le caractère t

Supposons que vous souhaitiez filtrer les lignes où le caractère « a » précède le caractère « t ». Vous pouvez utiliser une commande comme celle ci-dessous :

cat sample|grep "a\+t"

Le résultat est visible dans la capture d'écran suivante.

grep expression étendue correspondant à un ou plusieurs caractères a suivis de t

Expansion de l'accolade

La syntaxe pour l'expansion des accolades est soit une séquence, soit une liste d'éléments séparés par des virgules et placés entre accolades '{}'. Les éléments de début et de fin d'une séquence sont séparés par deux points '..'.

Quelques exemples sont présentés ci-dessous.

Commande echo utilisant l'expansion d'accolades pour générer plusieurs chaînes de caractères à partir d'une séquence et d'une liste

Dans les exemples ci-dessus, la commande echo crée des chaînes de caractères en utilisant l'expansion des accolades, produisant plusieurs chaînes à partir d'un seul motif.

FAQ

Par défaut, grep utilise les expressions régulières de base. egrep permet les expressions étendues (équivalent à grep -E), et fgrep recherche des chaînes de caractères fixes sans expression régulière (grep -F). Les versions modernes de GNU grep indiquent que egrep et fgrep sont obsolètes ; il est donc préférable d'utiliser grep -E et grep -F.

Les classes de caractères correspondent à une catégorie de caractères. Les expressions entre crochets, comme [az], correspondent à une plage de caractères, tandis que les classes POSIX, telles que [[:alpha:]], [[:digit:]] et [[:space:]], correspondent respectivement aux lettres, aux chiffres et aux espaces. Elles garantissent la lisibilité et la portabilité des modèles dans différentes régions.

Ajoutez l'option `-i`, par exemple `grep -i "hello" sample`. Cela correspond à `Hello`, `HELLO` et `hello`. Sans `-i`, les expressions régulières sont sensibles à la casse : une majuscule et sa minuscule sont considérées comme deux caractères différents.

Les caractères génériques (globbing) du shell permettent d'étendre les noms de fichiers, où * représente n'importe quel caractère et ? un seul caractère. Les expressions régulières permettent de rechercher du texte dans les fichiers, où * représente zéro ou plusieurs caractères identiques au précédent. Un même symbole peut avoir une signification différente selon le contexte.

Utilisez l'option `-o`, par exemple `grep -o "a\+t" sample`. Au lieu d'afficher la ligne entière, `grep` n'affiche que la partie correspondant au motif, une occurrence par ligne. C'est utile pour…tracdes valeurs telles que des adresses e-mail ou des numéros de téléphone.

Utilisez l'alternance avec le symbole pipe. En mode étendu, `grep -E "cat|dog" sample` recherche les lignes contenant « cat » ou « dog ». En mode basique, vous devez l'échapper : `grep "cat\|dog" sample`. L'alternance permet à une seule commande de rechercher plusieurs motifs simultanément.

Les assistants IA peuvent transformer une description en langage clair en une expression régulière fonctionnelle, expliquer le fonctionnement d'un motif complexe et suggérer des solutions en cas d'échec de la correspondance. Les outils d'apprentissage automatique détectent également les motifs récurrents dans les fichiers journaux volumineux, une tâche fastidieuse que la saisie manuelle serait impossible.

Oui. Copilote GitHub Ce module suggère des commandes grep et des expressions régulières directement à partir d'un commentaire ou d'un motif partiel pendant la saisie. Il accélère l'écriture d'expressions complexes, mais il est recommandé de tester tout motif généré sur des données réelles avant de l'utiliser.

Résumez cet article avec :