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 →
Ci-dessous, les différences entre deux révisions de la page.
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 | ||
+ | |||