GNU/Linux >> Tutoriels Linux >  >> Linux

Présentation des expressions régulières

Nous avons tous utilisé le globbing de fichiers avec des caractères génériques comme * et ? comme moyen de sélectionner des fichiers ou des lignes de données spécifiques à partir d'un flux de données. Ces outils sont puissants et je les utilise plusieurs fois par jour. Pourtant, il y a des choses qui ne peuvent pas être faites avec des jokers.

Les expressions régulières (regex ou RE) nous fournissent un modèle plus complexe et flexible

capacités correspondantes. Tout comme certains caractères prennent une signification particulière lors de l'utilisation de la globalisation de fichiers, les RE ont également des caractères spéciaux. Il existe deux principaux types d'expressions régulières (RE), les expressions régulières de base (BRE) et les expressions régulières étendues (ERE).

La première chose dont nous avons besoin, ce sont quelques définitions. Il existe de nombreuses définitions du terme expressions régulières , mais beaucoup sont sèches et non informatives. Voici les miens.

Les expressions régulières sont des chaînes de littéraux et de métacaractères qui peuvent être utilisées comme modèles par divers utilitaires Linux pour faire correspondre des chaînes de données en texte brut ASCII dans un flux de données. Lorsqu'une correspondance se produit, elle peut être utilisée pour extraire ou éliminer une ligne de données du flux, ou pour modifier la chaîne correspondante d'une manière ou d'une autre.

Les expressions régulières de base (BRE) et les expressions régulières étendues (ERE) ne sont pas significativement différentes en termes de fonctionnalité. (Voir la section 3.6 de la page d'informations de grep, "Expressions régulières basiques et étendues".) La principale différence réside dans la syntaxe utilisée et la manière dont les métacaractères sont spécifiés. Dans les expressions régulières de base, les métacaractères ? , + , { , | , ( , et ) perdre leur signification particulière. Au lieu de cela, il est nécessaire d'utiliser les versions avec antislash :\? , \+ , \{ , \| , \( , et \) . La syntaxe ERE est considérée par beaucoup comme plus facile à utiliser.

Remarque : Lorsque je parle d'expressions régulières, d'une manière générale, j'entends généralement inclure à la fois les expressions régulières de base et les expressions régulières étendues. S'il y a une différenciation à faire j'utiliserai les acronymes BRE pour les expressions régulières de base ou ERE pour les expressions régulières étendues.

Les expressions régulières (ER) poussent le concept d'utilisation de métacaractères pour faire correspondre les modèles dans les flux de données beaucoup plus loin que le globbing de fichiers, et nous donnent encore plus de contrôle sur les éléments que nous sélectionnons dans un flux de données. Les RE sont utilisés par divers outils pour analyser un flux de données pour faire correspondre les modèles de caractères afin d'effectuer une transformation sur les données.

Remarque : Une signification générale de l'analyse est d'examiner quelque chose en étudiant ses composants. Pour nos besoins, nous analysons un flux de données pour localiser des séquences de caractères qui correspondent à un modèle spécifié.

Les expressions régulières ont la réputation d'être des incantations obscures et obscures que seuls ceux qui ont des pouvoirs spéciaux d'administrateur système utilisent. Cette seule ligne de code ci-dessous (que j'ai utilisée pour transformer un fichier qui m'a été envoyé en un formulaire utilisable) semblerait le confirmer :

$ cat Experiment_6-1.txt | grep -v Team | grep -v "^\s*$" | sed -e "s/[Ll]eader//" -e "s/\[//g" -e "s/\]//g" -e "s/)//g" | awk '{print $1" "$2" <"$3">"}' > addresses.txt

Ce pipeline de commandes semble être une séquence insoluble de charabia dénué de sens pour quiconque ne connaissant pas regex. Cela m'a certainement semblé le cas la première fois que j'ai rencontré quelque chose de similaire au début de ma carrière. Comme vous le verrez, les regex sont relativement simples une fois qu'elles sont expliquées.

Nous ne pouvons que commencer à effleurer toutes les possibilités que nous offrent les expressions régulières dans un seul article (même dans une seule série). Il existe des livres entiers consacrés exclusivement aux expressions régulières, nous allons donc explorer les bases dans une série d'articles ici sur Activer Sysadmin au cours de la semaine à venir. À la fin, vous en saurez juste assez pour commencer les tâches communes aux administrateurs système. J'espère que vous aurez envie d'en savoir plus par vous-même après cela.

Remarque : Cet article est une version légèrement modifiée du chapitre 6 du volume 2 de mon livre Linux, Utiliser et administrer Linux :de zéro à SysAdmin, qui doit sortir d'Apress fin 2019.


Linux
  1. Premiers pas avec les expressions régulières :un exemple

  2. Présentation des expressions régulières

  3. Bash :Expressions régulières en substitution ?

  4. \d n'est-il pas pris en charge par les expressions de base de grep ?

  5. Évaluer des expressions dans Vim

Initiation aux expressions régulières

6 meilleurs outils CLI pour rechercher des données en texte brut à l'aide d'expressions régulières

Expressions régulières dans Grep (Regex)

Expressions régulières dans la commande Grep avec 10 exemples - Partie I

Présentation d'Amazon Linux

Pourquoi `\d` ne fonctionne-t-il pas dans les expressions régulières de sed ?