Outils pour utilisateurs

Outils du site


reseau:regexp:accueil

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
reseau:regexp:accueil [2021/11/24 22:27] – [Liste de quelques méta-caractères utilisés et leur fonction :] techer.charles_educ-valadon-limoges.frreseau:regexp:accueil [2021/11/30 15:24] (Version actuelle) – [grep] techer.charles_educ-valadon-limoges.fr
Ligne 4: Ligne 4:
 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.  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 de simplifier les recherches dans des fichiers texte comme les fichiers journaux ou les fichiers de configuration et de réaliser, en une seule commande, un ensemble de tâches.+Les expressions régulières permettent 
 +  * de rechercher des "motifs" dans des fichiers texte comme les fichiers journaux ou les fichiers de configuration 
 +  * de réaliser, en une seule commande, un ensemble de tâches. 
 +  * appliquer des transformations dans du texte ; 
 +  * valider la conformité d’une donnée. 
  
 ===== Définir des expressions régulières ===== ===== Définir des expressions régulières =====
Ligne 11: Ligne 16:
 Il existe deux standards principaux en matière d'expression régulière, POSIX et Perl. Il existe deux standards principaux en matière d'expression régulière, POSIX et Perl.
  
-==== Liste de quelques méta-caractères utilisés et leur fonction : ====+<WRAP center round todo> 
 +Un site pour apprendre à utiliser les expressions régulières :  
 +  * https://zestedesavoir.com/tutoriels/3651/les-expressions-regulieres-1/ 
 +  * en testant les expressions régulières avec [[https://rubular.com/|Rubular]] 
 + 
 +Dans ce tutoriel vous utiliserez également : 
 +  * grep 
 +  * sed 
 +  * less 
 +</WRAP> 
 + 
 + 
 +===== les commandes linux utiles ===== 
 +  * **cd** : aller dans un dossier (absolu « /home/nouvel/test... » ou relatif « test/ »), 
 +  * **ls** : afficher les fichiers du dossier courant, 
 +  * **pwd** : afifcher le chemin du dossier courant, 
 +  * **mkdir** : créer un dossier, 
 +  * **rm** : effacer un fichier (ou un dossier : « rm -r »), 
 +  * **cat** : envoie le contenu d'un (des) fichier(s) vers le flux de sortie standard, 
 +  * **less** : visualiser un flux (fèches pour monter / descendre, « q » pour quitter), 
 +  * **grep** : afficher les lignes du fux qui correspondent à une expression régulière, 
 +  * **sort** : trie les lignes du flux par ordre lexicographique, 
 +  * **uniq** : omet les lignes répétées dans le fux, 
 +  * **wc** : compte le nombre de lignes / mots / caractères dans le flux. 
 +===== Le pipe ===== 
 +Le pipe **|** permet de changer la destination d'un flux de données 
 +==== Par exemple : ==== 
 +  * Envoyer le contenu d'un fichier vers la sortie standard (terminal) : 
 +<code shell> 
 +cat fichier.txt 
 +</code> 
 +  * Envoyer le contenu d'un fichier vers la visualisation paginée : 
 +<code shell> 
 +cat fichier.txt | less 
 +</code> 
 +  * Envoyer le contenu d'un fichier vers **grep** pour sélectionne les lignes contenant le mot **limoges** et les le  
 +</code> 
 +visualiser page par page : 
 +<code shell> 
 +cat fichier.txt | grep limoges | less 
 +</code> 
 +  * Envoyer le contenu d'un fichier vers **grep**, qui sélectionne les lignes contenant le mot **limoges** puis enregistre les lignes dans un autre fichier : 
 +<code shell> 
 +cat fichier.txt | grep limoges > fichierlimoges.txt 
 +</code> 
 +=== Conseils === 
 +  * tester des commandes dans le terminal, 
 +  * lorsque la sortie est volumineuse, ajoutez ** | less ** pour visualiser page par page , 
 +  * pour enregistrer la sortie dans un fichier, ajoutez ** > fchier.txt **, 
 +  * pour voir (ou compter) des entrées distinctes, ajoutez **| sort | uniq -c**. 
 +===== grep ==== 
 +**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é. 
 +<WRAP center round info> 
 +grep vous permet de rechercher et d'afficher des résultats pour des mots entiers uniquement. 
 +</WRAP> 
 + 
 + 
 +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 : 
 +<code shell> 
 +grep motif nomfichier 
 +</code> 
 +ou 
 +<code shell> 
 +cat nomfichier | grep motif 
 +</code> 
 + 
 +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 : 
 +  * https://man7.org/linux/man-pages/man1/grep.1.html 
 +  * https://www.malekal.com/exemples-de-commande-grep-sous-linux/ 
 +<WRAP center round todo> 
 +Découvrir d'autres usages utiles des expressions régulières avec grep sous Linux :  
 +  * https://www.malekal.com/exemples-de-commande-grep-sous-linux/ 
 +</WRAP> 
 + 
 + 
 +==== Liste de quelques méta-caractères utilisés et leur fonction : =====
 ^Méta-caractère^Fonction^ ^Méta-caractère^Fonction^
 |\d|Tous les chiffres| |\d|Tous les chiffres|
Ligne 21: Ligne 120:
 |[0-9]|Les chiffres de 0 à 9| |[0-9]|Les chiffres de 0 à 9|
 |[abc]|a, b ou c| |[abc]|a, b ou c|
-|[^abc]|Ni a ni b ni c|+|[%%^%%abc]|Ni a ni b ni c|
 |{n}|Répéter n fois| |{n}|Répéter n fois|
 |{n,m}|Répéter de n à m fois| |{n,m}|Répéter de n à m fois|
Ligne 34: Ligne 133:
 |(…)|Sélection d’un groupe| |(…)|Sélection d’un groupe|
 |%%|%%|Permettant de faire ou entre 2 sous-motifs| |%%|%%|Permettant de faire ou entre 2 sous-motifs|
 +
 +==== Quelques exemples d’expressions régulières et leur signification ====
 +^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 1920x800 va afficher deux groupes 1920 et 800|
reseau/regexp/accueil.1637789244.txt.gz · Dernière modification : 2021/11/24 22:27 de techer.charles_educ-valadon-limoges.fr