Je voudrais prendre sur l'entrée standard (fichier ou par tube) un texte, vérifier chaque mot par des expressions régulières et, selon l'expression trouvée pour le mot, l'entourer par des balises (disons des balises HTML).
Si tu cherches juste à rechercher+remplacer, alors sed est l'outil idéal. Par exemple :
$ sed -r -e 's/\<(foo[^[:space:]]*bar)\>/<div class=\x27foobar\x27>1円<\/div>/;'
Cette expression va rechercher tous les mots débutant (\<) par foo et se finissant (\>) par bar, et les encadrer par un div de la classe foobar. [^[:space:]]* signifie zéro ou plus caractères qui ne sont pas de la classe [:space:], c'est à dire tout sauf espace et tab. L'utilisation de parenthèses () sur le pattern permet de le rappeler avec la back-reference1円.
je n'ai jamais pratiqué aucun des deux
Alors bon courage ! Les expressions régulières forment un monde vraiment abscons la première fois que tu t'y colles. Par contre, quand tu maîtrises ( ce qui n'est pas encore mon cas ! ), ça devient d'une puissance !...
# sed !
Posté par ymorin . En réponse au message Que prendre entre sed et awk ?. Évalué à 4.
Si tu cherches juste à rechercher+remplacer, alors sed est l'outil idéal. Par exemple :
Cette expression va rechercher tous les mots débutant (
\<) parfooet se finissant (\>) parbar, et les encadrer par undivde la classefoobar.[^[:space:]]*signifie zéro ou plus caractères qui ne sont pas de la classe[:space:], c'est à dire tout sauf espace et tab. L'utilisation de parenthèses()sur le pattern permet de le rappeler avec la back-reference1円.Alors bon courage ! Les expressions régulières forment un monde vraiment abscons la première fois que tu t'y colles. Par contre, quand tu maîtrises ( ce qui n'est pas encore mon cas ! ), ça devient d'une puissance !...
Voici un petit tutorial avec pleins d'astuces sed.
Bon courage !
Hop,
Moi.