logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).


L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT → ODT PDF Export

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édentes Révision précédente
doc:sed-non-greedy-pattern [01/05/2023 18:38]
arpinux suppression : fusion avec https://debian-facile.org/doc:systeme:sed
— (Version actuelle)
Ligne 1: Ligne 1:
-====== Sed et recherche de motif non-gourmande ====== 
- 
-  * Objet : sed et recherche non-gourmande de motif (non-greedy pattern) ​ 
-  * Niveau requis : {{tag>​avisé}} 
-  * Commentaires : sed, regex, commandes avancées 
-  * A savoir : [[:​utilisateurs:​hypathie:​tutos:​sed-et-les-expressions-rationnelles]] 
-  * Suivi : {{tag>​à-placer à-tester à-placer}} 
-    * Création par [[user>​David5647]] 31/08/2020 
-    * Testé par <...> le <...> FIXME 
-  * Commentaires sur le forum : [[https://​debian-facile.org/​viewtopic.php?​pid=341973#​p341973]] 
- 
-==== Comportement par défaut ==== 
- 
-Par défaut, lors de la recherche d'une expression régulière,​ la correspondance retournée par sed est la plus longue chaîne de caractères possible. 
- 
-Soit le texte suivant: 
-<​code>​Une 1ère phrase. Une deuxième phrase. Une troisième phrase. Une quatrième phrase!</​code>​ 
-Extraire la première phrase c'est lister tout les caractères jusqu'​au premier point, soit l'​expression régulière : 
-<​code>​.*/​.</​code>​ 
- 
-Mais une telle recherche renvoie la plus longue chaîne possible: 
-<code user>​echo "Une 1ère phrase. Une deuxième phrase. Une troisième phrase. Une quatrième phrase!"​ | sed -r '​s/​(.*\.).*/​\1/'</​code>​ 
-<​code>​Une 1ère phrase. Une deuxième phrase. Une troisième phrase.</​code>​ 
- 
-==== Recherche non-gourmande ==== 
- 
-Pour effectuer une recherche plus restrictive et trouver la plus petite chaîne correspondante,​ il suffit simplement de rechercher tout les caractères sauf le point. Soit l'​expression régulière suivante: 
-<​code>​[^.]*\.</​code>​ 
-On obtient alors : 
-<code user>​echo "Une 1ère phrase. Une deuxième phrase. Une troisième phrase. Une quatrième phrase!"​ | sed -r '​s/​([^.]*\.).*/​\1/'</​code>​ 
-<​code>​Une 1ère phrase.</​code>​ 
- 
-==== Aller plus loin ==== 
- 
-En répétant la motif plusieurs fois, on peut alors extraire toutes les correspondances. Soit l'​expression régulière:​ 
-<​code>​([^.]*\.){$i}</​code>​ avec i le nombre de répétitions 
- 
-Soit dans une boucle: 
-<code user>for i in 1 2 3; do  
-   echo "Une 1ère phrase. Une deuxième phrase. Une troisième phrase. Une quatrième phrase!"​ | sed -r "​s/​([^.]*\.){$i}.*/​\1/"​ ; 
-done</​code>​ 
-<​code>​Une 1ère phrase. 
- Une deuxième phrase. 
- Une troisième phrase.</​code>​ 
- 
-Voilà, c'est bête, mais j'ai cherché longtemps :P 
- 
  
doc/sed-non-greedy-pattern.1682959126.txt.gz · Dernière modification: 01/05/2023 18:38 par arpinux

Pied de page des forums

Propulsé par FluxBB