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
Prochaine révision
Révision précédente
doc:systeme:sed [08/09/2020 06:46]
smolski [Préparation aux exemples d'illustration de ce tuto :]
doc:systeme:sed [30/09/2023 22:14] (Version actuelle)
captnfab [Lien :]
Ligne 84: Ligne 84:
 Afin d'​éviter que le shell interprète certains caractères,​ il vaut mieux encadrer la commande avec des apostrophes simples ou doubles : ''​ ' ''​ ou ''"''​ . Afin d'​éviter que le shell interprète certains caractères,​ il vaut mieux encadrer la commande avec des apostrophes simples ou doubles : ''​ ' ''​ ou ''"''​ .
  
 +<​note>​-e renvoie le résultat sur l'​entrée standard(écran),​ le fichier n'est pas modifié</​note>​
 **Syntaxe :** \\ **Syntaxe :** \\
    sed -e <​commande_sed>​ -e <​commande_sed>​ <​fichier_à_traiter>​    sed -e <​commande_sed>​ -e <​commande_sed>​ <​fichier_à_traiter>​
Ligne 550: Ligne 551:
 //Merci à //​**cthulu**//​ Hop !// LOL //Merci à //​**cthulu**//​ Hop !// LOL
  
 +===== Sed et recherche de motif non-gourmande =====
 +
 +  * Création par [[user>​David5647]] 31/08/2020
 +  * 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
 ===== Lien : ===== ===== Lien : =====
  
Ligne 557: Ligne 598:
 **Voir aussi ssed aux fonctions plus étendues :** **Voir aussi ssed aux fonctions plus étendues :**
   * https://​debian-facile.org/​utilisateurs:​phlinux:​tutos:​omegat-merge-de-la-source-avec-la-traduction   * https://​debian-facile.org/​utilisateurs:​phlinux:​tutos:​omegat-merge-de-la-source-avec-la-traduction
 +
  
  
doc/systeme/sed.1599540419.txt.gz · Dernière modification: 08/09/2020 06:46 par smolski

Pied de page des forums

Propulsé par FluxBB