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 22/02/2007, 14h45   #1
Invité régulier
 
Inscription : décembre 2006
Messages : 49
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 49
Points : 9
Points : 9
Par défaut SED -i dans un script sh ; ca marche pas

bonjour,
dans un script j'essai de remplacer un mot contenu dans un fichier mais à l'execution ca ne marche pas, par contre quand je l'utilise directement en ligne de commande ca marche, voici mon code, merci pour votre aide:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
case "$reponse" in
        "o")
        echo -n "Par quel mot voudriez-vous remplacer $mot ? "
        read remp
        sed -i 's/"'$mot'"/"'$remp'"/' /exo/remptest
        ;;
 
        "n")
        echo c\'est vous qui voyez !!;;
 
        *) echo "Erreur, vous deviez répondre par oui ou par non.";;
esac
lemordore est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2007, 15h37   #2
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 306
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 306
Points : 8 590
Points : 8 590
T'as un message d'erreur ou qqch du genre ?
__________________

Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2007, 15h42   #3
Invité régulier
 
Inscription : décembre 2006
Messages : 49
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 49
Points : 9
Points : 9
merci pour votre rapidité.
je n'ais aucun message d'erreur, mais c'est en me rendant dans le fichier concernant je me rends compte que la modif n'a pas ete pris en compte,
mais si je tape directement:

sed -i 's/bonjour/salut/' /exo/remptest

alors ca marche, j'ais essayé de protéger mes variables mais rien y fait,
merci
lemordore est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2007, 15h45   #4
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 306
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 306
Points : 8 590
Points : 8 590
C'est évident !!!

Regarde ta commande sed et essaie de la réécrire toi-même en faisant les substitutions. Tu t'apercevras que sed doit remplacer "bonjour" par "salut" et pas seulement bonjour par salut. Y a des guillemets en trop !!
__________________

Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2007, 16h06   #5
Invité régulier
 
Inscription : décembre 2006
Messages : 49
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 49
Points : 9
Points : 9
Désolé d'insister , mais j'ais essayé en retirant les guillemets,toujours la meme histoire...

sed -i 's/$mot/$remp/' /exo/remptest
lemordore est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2007, 16h33   #6
Invité régulier
 
Inscription : décembre 2006
Messages : 49
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 49
Points : 9
Points : 9
j'ais tout essayé je comprends ke vous preferiez ke je trouve par moi meme...je ne vois pas les kels guillmets sont en trop

Code :
sed -i 's/"'$mot'"/"'$remp'"/' /exo/remptest
lemordore est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2007, 16h38   #7
Membre régulier
 
Inscription : décembre 2003
Messages : 90
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 90
Points : 72
Points : 72
Citation:
Envoyé par lemordore
j'ais tout essayé je comprends ke vous preferiez ke je trouve par moi meme...je ne vois pas les kels guillmets sont en trop

Code :
sed -i 's/"'$mot'"/"'$remp'"/' /exo/remptest


si tu fais juste:
Code :
sed -i 's/'$mot'/'$remp'/' /exo/remptest
ca ne marche pas ?
uraxyd est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2007, 16h46   #8
Invité régulier
 
Inscription : décembre 2006
Messages : 49
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 49
Points : 9
Points : 9
Si ca marche je ne comprends pas pourtant jj'aurais juré que j'avais essayé ca ce matin, (oui je me bat avec ce bout de code depuis ce matin)

En tout cas merci,

Au passage j'essai de rendre executable un fichier rempl.sh, mais je dois mal m'y prendre

mais ca ne change rien
lemordore est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2007, 16h48   #9
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 306
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 306
Points : 8 590
Points : 8 590
Citation:
Envoyé par lemordore
Si ca marche je ne comprends pas pourtant jj'aurais juré que j'avais essayé ca ce matin, (oui je me bat avec ce bout de code depuis ce matin)
Dans les guillemets simples ('), les variables ne sont pas substituées. Le fait de faire '/'$mot, c'est une gruge qui permet de sortir des guillemets pour faire la substitution. Sinon, pour les commandes sed simples, tu peux y aller directement avec des " : sed -i "s/$mot/$temp". Ca marche très bien. Généralement, c'est même ce que je fais : je passe aux ' simples quand j'ai des $ que je ne veux pas substituer, genre marqueur de fin de ligne.

_Mac_
__________________

Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2007, 16h51   #10
Membre régulier
 
Inscription : décembre 2003
Messages : 90
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 90
Points : 72
Points : 72
Citation:
Envoyé par lemordore
Si ca marche je ne comprends pas pourtant jj'aurais juré que j'avais essayé ca ce matin, (oui je me bat avec ce bout de code depuis ce matin)

En tout cas merci,

Au passage j'essai de rendre executable un fichier rempl.sh, mais je dois mal m'y prendre

mais ca ne change rien
avec +x ca devrait le faire
uraxyd est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2007, 14h47   #11
Invité régulier
 
Inscription : décembre 2006
Messages : 49
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 49
Points : 9
Points : 9
Merci uraxyd
lemordore 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 +2. Il est actuellement 18h12.


 
 
 
 
Partenaires

Hébergement Web