OVH Cloud OVH Cloud

Sed - Caractères spéciaux

5 réponses
Avatar
Remys Morrissette
Bonjour,

je veux modifier une chaîne de texte dans plusieurs fichier.
le 'défi' ; des caractères spéciaux de html tel que ./ > = . < "

j'utilise la commande suivante qui fonctionne très bien sur un mot unique

for file in *; do sed -i 's/old/new/g' $file; done

le texte à remplacer :

<a href="index_pp.html"><img src="back.png" alt="Back" /></a>

par

<a href="./index_pp.html"><img src="back.png" alt="Back" /></a>

à la limite 'index_pp.html' par './index_pp.html' mais c'est agréable
dans avoir plus dans le 'défi. ;-)


En gros quel est le 'joker' `utiliser pour encadrer ma chaîne de texte.

Merci

--
Remys

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org

5 réponses

Avatar
Jacques L'helgoualc'h
Remys Morrissette a écrit, vendredi 13 mars 2009, à 02:12 :
Bonjour,



bonjour,

je veux modifier une chaîne de texte dans plusieurs fichier.
le 'défi' ; des caractères spéciaux de html tel que ./ > = . < "

j'utilise la commande suivante qui fonctionne très bien sur un mot unique

for file in *; do sed -i 's/old/new/g' $file; done



Tu peux supprimer la boucle :

sed -i -e 's/old/new/g' *

(ou -i.old).

le texte à remplacer :

<a href="index_pp.html"><img src="back.png" alt="Back" /></a>

par

<a href="./index_pp.html"><img src="back.png" alt="Back" /></a>

à la limite 'index_pp.html' par './index_pp.html' mais c'est agréable
dans avoir plus dans le 'défi. ;-)

En gros quel est le 'joker' `utiliser pour encadrer ma chaîne de texte.



Le délimiteur de la substitution est libre, donc

sed -e 's,","./",'

ferait l'affaire en insérant « ./ » après la première double-quote (si
ton exemple est une ligne complète) ; sinon, essaie d'être plus précis :

sed -e 's,href="index_pp,href="./index_pp,g'

et/ou utilise une adresse de ligne pour limiter les confusions :

sed -i.old -e
'/href="index_pp.html">/ s,href="index_pp,href="./index_pp,g'

Merci



de rien,
--
Jacques L'helgoualc'h

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
GouNiNi
Bonjour,

Je pense que tu eux t'en sortir comme ça :

echo '<a href="index_pp.html"><img src="back.png" alt="Back" /></a>' | sed
-re "s?(.*)index_pp.html(.*)?1./index_pp.html2?"

A étoffer si besoin, mais chez moi le résultat voulu est là.

Cordialement

--
.`'`. GouNiNi
: ': :
`. ` .` GNU/Linux
`'` http://www.geekarea.fr




On Fri, 13 Mar 2009 02:12:49 -0400, Remys Morrissette
wrote:
Bonjour,

je veux modifier une chaîne de texte dans plusieurs fichier.
le 'défi' ; des caractères spéciaux de html tel que ./ > = . < "

j'utilise la commande suivante qui fonctionne très bien sur un mot


unique

for file in *; do sed -i 's/old/new/g' $file; done

le texte à remplacer :

<a href="index_pp.html"><img src="back.png" alt="Back" /></a>

par

<a href="./index_pp.html"><img src="back.png" alt="Back" /></a>

à la limite 'index_pp.html' par './index_pp.html' mais c'est agréable
dans avoir plus dans le 'défi. ;-)


En gros quel est le 'joker' `utiliser pour encadrer ma chaîne de texte.

Merci

--
Remys



--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
GouNiNi
Bonjour,

Je pense que tu eux t'en sortir comme ça :

echo '<a href="index_pp.html"><img src="back.png" alt="Back" /></a>' | sed
-re "s?(.*)index_pp.html(.*)?1./index_pp.html2?"

A étoffer si besoin, mais chez moi le résultat voulu est là.

Cordialement

--
.`'`. GouNiNi
: ': :
`. ` .` GNU/Linux
`'` http://www.geekarea.fr


On Fri, 13 Mar 2009 02:12:49 -0400, Remys Morrissette
wrote:
Bonjour,

je veux modifier une chaîne de texte dans plusieurs fichier.
le 'défi' ; des caractères spéciaux de html tel que ./ > = . < "

j'utilise la commande suivante qui fonctionne très bien sur un mot


unique

for file in *; do sed -i 's/old/new/g' $file; done

le texte à remplacer :

<a href="index_pp.html"><img src="back.png" alt="Back" /></a>

par

<a href="./index_pp.html"><img src="back.png" alt="Back" /></a>

à la limite 'index_pp.html' par './index_pp.html' mais c'est agréable
dans avoir plus dans le 'défi. ;-)


En gros quel est le 'joker' `utiliser pour encadrer ma chaîne de texte.

Merci

--
Remys




--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Remys.Morrissette
Rebonjour,

bon, j'avoue ne plus y comprendre grand chose. après plusieurs essaie.

en remplaçant simplement '/' par une autre caractère '%'
et nul besoin de mettre '' devant les espaces, point, etc.

ne pas oublier '*' à la fin car sur tous les fichiers.

sed -i -e 's,<a href="index_pp.html"><img src="back.png" alt="Back"
/></a>,<a href="./index_pp.html"><img src="back.png" alt="RETOUR"
/></a>,g' *

fonctionne très bien.

--
Remys

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

Pour vous DESABONNER, envoyez un message avec comme objet « unsubscribe »
vers
En cas de soucis, contactez EN ANGLAIS
Avatar
Jacques L'helgoualc'h
Remys.Morrissette a écrit, samedi 14 mars 2009, à 01:15 :
Rebonjour,



Re.

bon, j'avoue ne plus y comprendre grand chose. après plusieurs essaie.

en remplaçant simplement '/' par une autre caractère '%'
et nul besoin de mettre '' devant les espaces, point, etc.



Tu n'aurais besoin de protéger chaque espace que si tu ne « quotais »
pas toute la commande --- par contre, le point est un méta-caractère
dans le premier membre de la substitution, donc tu dois utiliser . ou
[.] pour ne pas accepter n'importe quoi à cet endroit...
--
Jacques L'helgoualc'h

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

Pour vous DESABONNER, envoyez un message avec comme objet « unsubscribe »
vers
En cas de soucis, contactez EN ANGLAIS