Précédent   Forum des professionnels en informatique > Systèmes > Autres systèmes > Unix > Solaris
Solaris Forum d'entraide sur le système Solaris.
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 01/07/2009, 11h35   #1
Invité de passage
 
Inscription : juillet 2009
Messages : 1
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 1
Points : 0
Points : 0
Par défaut Problème avec SED et les caractères "/" sur Solaris

Bonjour à tous, alors voilà mon problème j'ai créé une fonction qui me permet de modifier une ligne d'un fichier avec en paramètre le nom du fichier à traiter et une chaine de caractère qui va remplacer une partie de ma ligne


sed "/^DEBUT_LIGNE/s/TOTO .*$/TOTO $CHAINE/" $MON_FICHIER

Donc pour un fichier exemple comme ça:

erere rereproepr reopropero kreokroekrepokr ekroep
rkoekr ekroekpr keropekr krpokerpoekrp kerpo
eorkeporkeropekrpoTOTO chaine à remplacer
efeflepf efpelf lfpelfpefl epf

J'ai bien:

erere rereproepr reopropero kreokroekrepokr ekroep
rkoekr ekroekpr keropekr krpokerpoekrp kerpo
eorkeporkeropekrpoTOTO $CHAINE
efeflepf efpelf lfpelfpefl epf

Le problème c'est que si dans ma variable $CHAINE j'ai par exemple "toto/tata" il va me balancer une erreur parce qu'il interprète le caractère /

J'ai essayé en remplaçant "/" par "\/" mais ça ne marche pas sauf si je le met en brute dans le sed, mais vu que je passe par une variable c'est pas bon

J'ai essayé en remplaçant "/" par son code ASCII : "\x2F" mais sed l'interprete comme ça : "x2F"

Je suis a cours d'idée, donc si vous avez déjà eu une problème comme ça, ça m'intéresse

Merci
supermen3000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2009, 13h14   #2
Membre éclairé
 
Inscription : janvier 2009
Messages : 318
Détails du profil
Informations personnelles :
Âge : 24
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : janvier 2009
Messages : 318
Points : 355
Points : 355
Envoyer un message via MSN à wakan
Bonjour,
Je sais pas si cela va marcher mais as-tu essayé de le remplacer par \\/.
Je m'explique la première fois l'interpréteur va passer et va replacer le \\/ par \/ et donc en arrivant il n'y aura pas d'erreur car le \/ va etre interprété par le sed en /.
A tester. Je ne suis pas sur que cela marche.
A bientôt
wakan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/07/2009, 11h14   #3
Modérateur
 
Avatar de gangsoleil
 
R&D en systemes informatiques bas niveau Unix/Linux
Inscription : mai 2004
Messages : 5 129
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : R&D en systemes informatiques bas niveau Unix/Linux

Informations forums :
Inscription : mai 2004
Messages : 5 129
Points : 8 749
Points : 8 749
Bonjour,

Tu n'es pas oblige d'utiliser le / comme separateur :

Code :
sed "#^DEBUT_LIGNE#s#TOTO .*$#TOTO $CHAINE#" $MON_FICHIER
__________________
Modérateur "C", "Informatique Générale & Hardware" et "Unix"
Les règles du forum
gangsoleil est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 04h46.


 
 
 
 
Partenaires

Hébergement Web