Une expression régulière sert à identifier une chaîne de caractères répondant à un ou plusieurs critères comme par exemple une chaîne de caractères ne contenant des lettres.
Les expressions régulières permettent :
Les expressions régulières utilisent divers opérateurs pour combiner des expressions de plus petite taille.
Il existe deux standards principaux en matière d'expression régulière, POSIX et Perl.
Un site pour apprendre à utiliser les expressions régulières :
Dans ce tutoriel vous utiliserez également :
Le pipe | permet de changer la destination d'un flux de données
cat fichier.txt
cat fichier.txt | less
</code> visualiser page par page :
cat fichier.txt | grep limoges | less
cat fichier.txt | grep limoges > fichierlimoges.txt
grep signifie Global Regular Expression Print et est un outil en ligne de commande Linux / Unix utilisé pour rechercher une chaîne de caractères dans un fichier spécifié.
grep vous permet de rechercher et d'afficher des résultats pour des mots entiers uniquement.
Le modèle de recherche de texte est appelé une expression régulière (regex). Lorsqu'il trouve une correspondance, il imprime la ligne avec le résultat. La commande grep est pratique lors de la recherche dans de gros fichiers journaux.
grep peut s'utiliser directement pour rechercher un motif dans un fichier mais également via un pipe.
Les commandes suivantes alors équivalentes :
grep motif nomfichier
ou
cat nomfichier | grep motif
Pour rendre grep insensible à la casse, utilisez l'option -i :
Options utiles
option | Action |
---|---|
-i | insensible à la casse |
-w | rechercher dans tous le fichiers |
-n | afficher les numéros de ligne |
-v | inverser la recherche pour exclure |
-mx | Limiter le nombre de sortie à x ligne |
-e chaine1 -e chaine2 | Rechercher plusieurs chaînes |
-Ee “chaine1|chaine2” | Rechercher plusieurs chaînes avec les regex |
-c | compter le nombre de ligne |
“^chaine” | Rechercher en début de ligne |
“chaine$” | Rechercher en fin de ligne |
Lien :
Découvrir d'autres usages utiles des expressions régulières avec grep sous Linux :
Méta-caractère | Fonction | |
---|---|---|
\d | Tous les chiffres | |
\D | Tout sauf les chiffres | |
. | Tout caractère | |
\w | Toutes les lettres | |
\W | Tout sauf des lettres | |
[a-z] | Les lettres de a à z (attention les expressions régulières sont sensibles à la casse) | |
[0-9] | Les chiffres de 0 à 9 | |
[abc] | a, b ou c | |
[^abc] | Ni a ni b ni c | |
{n} | Répéter n fois | |
{n,m} | Répéter de n à m fois | |
* | Répéter de 0 à n fois | |
+ | Répéter de 1 à n fois | |
\s | Le caractère espace | |
\S | Tous les caractères sauf l’espace | |
Début de ligne ou négation | ||
$ | Fin | |
\b | Début ou fin de mot | |
\ | Caractère échappatoire | |
(…) | Sélection d’un groupe | |
| | Permettant de faire ou entre 2 sous-motifs |
Expression | Signification | |
---|---|---|
test | Recherche de mots contenant test (tester, attester…) | |
\d{3}-\d{6} | Chaine de caractères de la forme 3chiffres-6chiffres comme 123-654321 | |
a | Toutes les lignes commençant par la lettre a | |
\bf\w*\b | Tous les mots commençant par la lettre f | |
\d+ | Tous les mots ne contenant que des chiffres (au moins un chiffre) | |
\w+ | Tous les mots ne contenant que des lettres (au moins une lettre) | |
(fichier.+)\.pdf$ | Va afficher toutes les lignes commençant par fichier avec l’extension .pdf mais ne va afficher que la partie avant l’extension (fichier1.pdf affichera fichier1) | |
ABC|XYZ | Tous les mots contenant ABC ou XYZ | |
\btest\b | Tous les mots « test » exactement (on ne cherche que le mot test) | |
(\d+)x(\d+) | Pour le texte 1920×800 va afficher deux groupes 1920 et 800 |