Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/01/2012, 18h22   #1
Nouveau Membre du Club
 
Inscription : janvier 2006
Messages : 90
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 90
Points : 26
Points : 26
Par défaut sed avec le caractère &

Bonsoir,

J'ai une chaine de caractères contenue dans une variable $saisie
Code :
saisie='<a href="http://treaties.un.org/pages/ViewDetails.aspx?src=TREATY&amp;mtdsg_no=IV-3-a&amp;chapter=4&amp;lang=fr" target="_self" name="lien externe">consulter cette page...</a>'
Comme vous le voyez, cette chaîne contient quelques caractères "&" provenant d'une Url que j'ai récupérée un petit plus haut dans mon script.

Je veux insérer cet variable (avec son Url) dans un fichier texte avec la commande sed dans la ligne $ligne_choisie

Code :
sed -i "${ligne_choisie} s#µµµµµµ#${saisie}#" temp
et ça remplace mon µµµµµµ par ma variable $saisie, mais ça me remplace aussi tous les & de cette variable par µµµµµµ. Normal, puisque, si j'ai bien compris, "le métacaractère "&" (esperluette) va nous permettre de remplacer toutes chaînes de caractères mises en correspondance par le motif (ou l'expression régulière) fourni en 1er argument".
Mais ça ne correspond pas à ce que je souhaite. Alors je tente

Code :
sed -i "${ligne_choisie} s#µµµµµµ#\&#" temp
Dans la commande que j'ai reproduite ci-dessus, j'ai essayé d'échapper le "&", mais ça ne va pas mieux que sans l'echapper. Si dans mon Url je substitue tous les & par des £, ma commande sed initiale fonctionne, mais ça ne fait que repousser le problème un peu plus loin, après, je n'arrive pas à remplacer £ par &...

Que faire ?

Cordialement
laloupiote est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2012, 19h26   #2
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
Salut,

Code :
sed "s#µµµµµµµµ#${saisie//&/\\&}#"
__________________
$ man woman
Il n'y a pas de page de manuel pour woman.
zipe31 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 20/01/2012, 06h35   #3
Nouveau Membre du Club
 
Inscription : janvier 2006
Messages : 90
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 90
Points : 26
Points : 26
super ! Merci beaucoup...
laloupiote est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 18h07   #4
Nouveau Membre du Club
 
Inscription : janvier 2006
Messages : 90
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 90
Points : 26
Points : 26
Bonsoir,

Pardon de relancer le sujet. Je l'avais mis en résolu parce que j'avais fait des tests qui fonctionnaient et, aujourd'hui, ça ne marche plus !!!

Code :
1
2
3
4
5
6
7
[jeu. 09 février (~) user] cat temp                                                                        
D'autre part, la Cour admettait que l'existence d'une U.E.S. pouvait également être reconnue judiciairement à l'occasion d'un contentieux électoral. Dans ces deux hypothèses, le tribunal d'instance statuait en premier et dernier ressort (µµµµµµ et R.&nbsp;2314-29 c.trav.)</p>                                             
[jeu. 09 février (~) user] echo $saisie                                                                    
<a target="gauche" name="Un article du code" href="/Cours/Code.php?base=Travail\&amp;Code=R2314-27\&amp;bloc=">art. R.\&nbsp;2314-27</a>                                                                              
[jeu. 09 février (~) user] sed "s#µµµµµµ#${saisie//&/\\&}#" temp                                           
D'autre part, la Cour admettait que l'existence d'une U.E.S. pouvait également être reconnue judiciairement à l'occasion d'un contentieux électoral. Dans ces deux hypothèses, le tribunal d'instance statuait en premier et dernier ressort (<a target="gauche" name="Un article du code" href="/Cours/Code.php?base=Travail\µµµµµµamp;Code=R2314-27\µµµµµµamp;bloc=">art. R.\µµµµµµnbsp;2314-27</a> et R.&nbsp;2314-29 c.trav.)</p>       
[jeu. 09 février (~) user]
Qu'est-ce que je fais mal ?

Cordialement,
laloupiote est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 18h37   #5
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
Salut,

Citation:
Envoyé par laloupiote Voir le message
Qu'est-ce que je fais mal ?
Les esperluettes sont déjà échappées dans ta variable, donc pas la peine de le refaire :
Code :
sed "s#µµµµµµ#${saisie}#" temp
__________________
$ man woman
Il n'y a pas de page de manuel pour woman.
zipe31 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 10/02/2012, 07h02   #6
Nouveau Membre du Club
 
Inscription : janvier 2006
Messages : 90
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 90
Points : 26
Points : 26
Bonjour,

Haaaaaaa... Et dans mon premier post, les esperluettes n'étaient pas échappées. J'ai compris !
Merci.
cordialement,
laloupiote est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h43.


 
 
 
 
Partenaires

Hébergement Web