GNU/Linux >> Tutoriels Linux >  >> Linux

Grep Regex :un guide complet

Présentation

Le grep commande (abréviation de G R global E régulier xpressions P rint) est un puissant outil de traitement de texte pour rechercher dans les fichiers et les répertoires.

Lorsque grep est combiné avec regex (reg ular ex pressions), la recherche avancée et le filtrage des sorties deviennent simples. Les administrateurs système, les développeurs et les utilisateurs réguliers bénéficient de la maîtrise des regex avec le grep commande.

Ce guide vous apprend à grep avec regex à travers des exemples.

Prérequis

  • Accès au terminal/ligne de commande.
  • Un fichier texte dans lequel effectuer une recherche. Les exemples utilisent le .bashrc fichier.
  • Utilisation de base de la commande grep.

Expression régulière grep

La syntaxe du grep La commande inclut des expressions régulières au format suivant :

grep [regex] [file]

Les expressions régulières sont des instructions simples qui aident à filtrer les données et les fichiers. De nombreuses commandes Linux, telles que la commande awk ou la commande sed, utilisent également des expressions régulières pour rechercher et manipuler des informations.

Deux types de caractères généraux constituent une instruction regex :

  • Littéraux , qui sont des caractères de texte standard.
  • Spécial caractères ou métacaractères ont une signification spéciale à moins d'être échappés avec une barre oblique inverse (\ ).

Le grep La commande offre trois options de syntaxe regex :

1. Expression régulière de base (BRE )

2. Expressions régulières étendues (ERE )

3. Expressions régulières compatibles Pearl (PCRE )

Par défaut, grep utilise le BRE syntaxe.

Exemple d'expression régulière Grep

Exécutez la commande suivante pour tester le fonctionnement de grep regex :

grep if .bashrc

L'expression régulière recherche la chaîne de caractères. Le résultat montre toutes les instances où la lettre i apparaît suivi d'un f dans le .bashrc dossier. Par conséquent, la sortie met en évidence les résultats suivants :

  • si
  • elsi
  • passi y
  • identifiersi ying

La commande renvoie uniquement les lignes où il y a une correspondance.

Comment utiliser Regex avec Grep

Regex offre de nombreuses possibilités pour affiner les recherches avec grep . Vous trouverez ci-dessous quelques exemples courants expliquant la syntaxe et la logique de base. Combinez les correspondances pour créer des instructions regex complexes.

Correspondances littérales

Les correspondances littérales effectuent une correspondance exacte pour la chaîne de caractères spécifiée. L'exemple d'expression précédent pour if montre une correspondance littérale.

La recherche est sensible à la casse. La commande suivante renvoie des résultats différents de l'exemple précédent :

grep If .bashrc

Pour rechercher plusieurs mots, ajoutez des guillemets :

grep "if the" .bashrc

Omettre les guillemets traite le deuxième mot comme un fichier ou un emplacement.

Correspondances d'ancrage

Les correspondances d'ancrage spécifient l'emplacement de la ligne dans la recherche. Il existe deux types d'ancre :

  • Le signe caret (^ ) recherche les lignes de correspondance commençant par l'expression fournie.
  • Le signe dollar ($ ) recherche les lignes de correspondance se terminant par le littéral fourni.

Par exemple, pour faire correspondre les lignes commençant par le mot alias dans le .bashrc fichier, utilisez :

grep ^alias .bashrc

La recherche n'affiche pas les lignes avec des tabulations ou des espaces avant le mot.

Pour faire correspondre les lignes se terminant par le mot then dans le .bashrc fichier, exécutez :

grep then$ .bashrc

Utilisez les deux ancres pour créer une instruction regex qui recherche un seul mot ou une seule instruction dans une ligne :

grep ^esac$ .bashrc

Utilisez uniquement des ancres pour rechercher des lignes vides dans un fichier. Ajoutez le -n option pour afficher les numéros de ligne dans la sortie :

grep -n ^$ .bashrc

Sans le -n option, la sortie est vide.

Correspondre à n'importe quel caractère

Le point (. ) le métacaractère regex correspond à n'importe quel caractère à la place du signe. Par exemple :

grep r.o .bashrc

La sortie affiche toutes les instances de la lettre r , suivi de n'importe quel caractère, suivi de o . Le point peut être n'importe quel caractère, tel qu'une lettre, un chiffre, un signe ou un espace.

Ajoutez plusieurs points pour indiquer plusieurs espaces réservés :

grep r..t .bashrc

Combinez avec la correspondance d'ancre pour créer une instruction regex complexe. Par exemple :

grep ..t$ .bashrc

L'instruction trouve toutes les lignes avec deux caractères quelconques suivis de la lettre t à la fin.

Expressions entre parenthèses

Les expressions entre parenthèses permettent de faire correspondre plusieurs caractères ou une plage de caractères à une position. Par exemple, pour faire correspondre toutes les lignes qui contiennent and ou end dans le .bashrc fichier, utilisez le modèle suivant :

grep [ae]nd .bashrc

Les expressions entre parenthèses permettent d'exclure des caractères en ajoutant le caret (^ ) signe. Par exemple, pour faire correspondre tout sauf and ou end , utilisez :

grep [^ae]nd .bashrc

Utilisez des expressions entre crochets pour spécifier une plage de caractères en ajoutant un trait d'union (- ) entre la première et la dernière lettre. Par exemple, recherchez toutes les occurrences de lettres majuscules :

grep [A-Z] .bashrc

Combinez les expressions entre parenthèses avec la correspondance des ancres pour trouver tous les mots commençant par des majuscules :

grep ^[A-Z] .bashrc

Les expressions entre parenthèses autorisent plusieurs plages. Par exemple, faites correspondre tous les caractères non alphabétiques avec :

grep [^a-zA-Z] .bashrc

La sortie met en évidence les chiffres et les caractères, en ignorant toutes les lettres.

Classes de personnages

Grep propose des classes de caractères standard en tant que fonctions prédéfinies pour simplifier les expressions entre parenthèses. Vous trouverez ci-dessous un tableau décrivant certaines classes et l'équivalent de l'expression entre parenthèses.

Syntaxe Description Équivalent
[[:alnum:]] Toutes les lettres et les chiffres. "[0-9a-zA-Z]"
[[:alpha:]] Toutes les lettres. "[a-zA-Z]"
[[:blank:]] Espaces et tabulations. [CTRL+V<TAB> ]
[[:digit:]] Chiffres de 0 à 9. [0-9]
[[:lower:]] Lettres minuscules. [a-z]
[[:punct:]] Ponctuation et autres caractères. "[^a-zA-Z0-9]"
[[:upper:]] Majuscules. [A-Z]
[[:xdigit:]] Chiffres hexadécimaux. "[0-9a-fA-F]"

La liste complète des classes de caractères grep se trouve dans le manuel grep.

Quantificateurs

Les quantificateurs sont des métacaractères qui spécifient le nombre d'apparitions. Le tableau suivant montre chaque syntaxe de quantificateur grep avec une courte description.

Syntaxe Description
* Zéro ou plusieurs correspondances.
? Zéro ou une correspondance.
+ Une ou plusieurs correspondances.
{n} n correspondances.
{n,} n ou plusieurs correspondances.
{,m} Jusqu'à m correspondances.
{n,m} De n jusqu'à m correspondances.

Le * signe correspond à un motif zéro ou plusieurs fois. Pour démontrer, exécutez la commande suivante :

grep m*and .bashrc

Dans ce cas, le * le signe correspond à la lettre m zéro ou plusieurs fois. Par conséquent "and , mand , mmand " sont tous des correspondances. La lettre m se répète un nombre quelconque de fois lorsqu'il est suivi du * signe.

Pour faire correspondre zéro ou exactement une correspondance, utilisez le ? signe. Placez l'instruction entre guillemets simples et échappez le caractère pour éviter toute interprétation. Par exemple :

grep 'm\?and' .bashrc

Vous pouvez également utiliser des expressions régulières étendues pour éviter les échappements :

grep -E 'm?and' .bashrc

La sortie met en évidence toutes les instances de and ou mand .

Utilisez des quantificateurs de plage pour spécifier un nombre exact de répétitions. Par exemple, recherchez des chaînes avec deux voyelles :

grep '[aeiouAEIOU]\{2\}' .bashrc
grep -E '[aeiouAEIOU]{2}' .bashrc

La sortie met en surbrillance tous les mots avec deux voyelles.

Alternance

L'alternance permet de définir des correspondances alternatives. Mettez les chaînes alternatives entre guillemets simples et séparez-les par un caractère pipe échappé (\| ).

Par exemple, pour rechercher les mots bash ou alias dans le .bashrc fichier, utilisez :

grep 'bash\|alias' .bashrc

Vous pouvez également utiliser l'expression régulière étendue et omettre le caractère d'échappement :

grep -E 'bash|alias' .bashrc

La sortie met en évidence les deux instances de chaîne dans le fichier.

Regroupement

Les expressions régulières permettent de regrouper des motifs en un seul élément. Placez le groupe entre parenthèses échappées pour une regex régulière ou utilisez extended.

Par exemple, recherchez la chaîne bashrc et faites le rc caractères facultatifs :

grep 'bash\(rc\)\?' .bashrc
grep -E 'bash(rc)?' .bashrc

La sortie met en évidence toutes les instances de bashrc . Depuis rc est facultatif, la commande correspond également au mot bash .

Expressions spéciales antislash

La commande grep propose quelques expressions antislash uniques pour la correspondance avancée des limites de mots. Vous trouverez ci-dessous un tableau avec de courts exemples pour chaque type d'expression.

Syntaxe Exemple Correspondances
(Le texte en gras représente les correspondances)
\b '\band\b' et
"et "
\et \
et
et
\B '\Band' _et
_et _
set
het y
\< '\ et
"et "
et y
et _
et
et
\> 'et\>' et
"et"
set
_et
et
et
\w '\wand' _et
_et _
main y
sable
\W '\Baguette' "et "
/et /
\s '\sand' et
et
\S '\Sand' _et
"et "
sable
main y
_et _
/et /

Par exemple, utilisez \b frontières pour localiser un mot qui ne fait pas partie d'un autre mot :

grep '\bse[et]\b' .bashrc

L'expression localise les mots see et set . La limite assure l'isolation des mots.

Méta-caractères d'échappement

L'échappement des méta-caractères traite les caractères spéciaux comme des littéraux. Par exemple, pour rechercher un point (.) en fin de ligne, échappez le méta-caractère :

grep '\.$' .bashrc

Ne pas autoriser l'interprétation des caractères aide lors de la recherche dans le code source ou les fichiers de configuration.


Linux
  1. Qu'est-ce que Kubernetes ? Guide complet

  2. Comment installer Void Linux :un guide complet étape par étape

  3. Guide complet d'utilisation d'AsciiDoc sous Linux

  4. Le guide complet du débutant sur LVM sous Linux

  5. Regex (grep) pour la recherche multi-lignes nécessaire

Un guide complet pour installer Tomcat sur Linux

Pare-feu Ubuntu UFW - Un guide complet

Le guide complet pour installer MySQL sur Ubuntu

10 exemples pratiques de regex avec grep

Commandes du répertoire Linux :un guide complet

Cronjob - Le guide complet des Cronjobs