Problème sed
Résolu/Fermé
nemith
-
Modifié le 28 oct. 2019 à 17:51
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 31 oct. 2019 à 07:56
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 31 oct. 2019 à 07:56
A voir également:
- Problème sed
- Sed windows - Forum Linux / Unix
- Remplacez le mot sed par le mot mais dans tout le texte. combien de caractères contient le document suite à cette modification (en incluant les espaces) ? ✓ - Forum Shell
- Sed supprimer ligne commençant par ✓ - Forum Linux / Unix
- Problème télécommande sedea ✓ - Forum Audio
- Sed supprimer retour chariot ✓ - Forum Programmation
2 réponses
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 408
28 oct. 2019 à 17:50
28 oct. 2019 à 17:50
Salut,
Solution 1 (des quotes doubles) :
Solution 2 (il faut sortir des quotes) :
sed -e 's/${CONF_INI}/${HTTPD}/' conf.dLes variables ne sont pas interprétées entre des quotes simples ;-((
Solution 1 (des quotes doubles) :
sed -e "s/${CONF_INI}/${HTTPD}/" conf.d
Solution 2 (il faut sortir des quotes) :
sed -e 's/'${CONF_INI}'/'${HTTPD}'/' conf.d
MErci pour ta réponse en effet cela je le savais déjà en fait, mais j'ai toujours la même erreur dans les 2 cas :
sed: -e expression #1, char 15: unknown option to `s'
script :
un debug :
./test1.sh
++ echo 'nom instance'
nom instance
++ CONF_INI='ServerRoot\ "/etc/httpd"'
++ echo 'ServerRoot\' '"/etc/httpd"'
ServerRoot\ "/etc/httpd"
++ read HTTP_INST
toto
++ HTTPD=/logiciel/apache/toto
++ echo /logiciel/apache/toto
/logiciel/apache/toto
++ sed -i 's/ServerRoot\' '"/etc/httpd"//logiciel/apache/toto/' conf.d
sed: -e expression #1, char 13: unterminated `s' command
sed: -e expression #1, char 15: unknown option to `s'
script :
set -x
echo "nom instance"
CONF_INI='ServerRoot\ "/etc/httpd"'
#CONF_INI=ServerRoot
echo $CONF_INI
read HTTP_INST
HTTPD="/logiciel/apache/$HTTP_INST"
echo $HTTPD
#sed -e "s/${CONF_INI}/${HTTPD}/" conf.d
sed -i 's/'${CONF_INI}'/'${HTTPD}'/' conf.d
un debug :
./test1.sh
++ echo 'nom instance'
nom instance
++ CONF_INI='ServerRoot\ "/etc/httpd"'
++ echo 'ServerRoot\' '"/etc/httpd"'
ServerRoot\ "/etc/httpd"
++ read HTTP_INST
toto
++ HTTPD=/logiciel/apache/toto
++ echo /logiciel/apache/toto
/logiciel/apache/toto
++ sed -i 's/ServerRoot\' '"/etc/httpd"//logiciel/apache/toto/' conf.d
sed: -e expression #1, char 13: unterminated `s' command
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 408
29 oct. 2019 à 10:04
29 oct. 2019 à 10:04
C'est l'anti-slash qui protège l'espace dans ta variable qui fiche le bronx ;-(
Essaie comme ça (en protégeant les quotes doubles) :
Et avec
Essaie comme ça (en protégeant les quotes doubles) :
CONF_INI="ServerRoot "/etc/httpd""
Et avec
sed -i 's/'"${CONF_INI}"'/'"${HTTPD}"'/' conf.d
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 408
>
nemith
31 oct. 2019 à 07:56
31 oct. 2019 à 07:56
Merci du retour.