Problème sed
Résolu
nemith
-
zipe31 Messages postés 38797 Statut Contributeur -
zipe31 Messages postés 38797 Statut Contributeur -
Bonjour,
j'essaye de remplacer des conf de fichier standart par des conf personalisées en appelant des $Path de conf via une variable en read
# Avant
#Après :
Merci
j'essaye de remplacer des conf de fichier standart par des conf personalisées en appelant des $Path de conf via une variable en read
# Avant
cat conf.d
ServerRoot "/etc/httpd"
ex de mon script
echo "nom instance"
CONF_INI='ServerRoot "/etc/httpd"'
echo $CONF_INI
read HTTP_INST
HTTPD="/xxxx/xxx/$HTTP_INST"
echo $HTTPD
sed -e 's/${CONF_INI}/${HTTPD}/' conf.d
#Après :
cat conf.d
ServerRoot "/etc/httpd"
CentOS 7.x #/bin/bash
Merci
Configuration: Windows / Chrome 78.0.3904.70
A voir également:
- Problème sed
- 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) ? - Guide
- Comptage des caractères dans Word ✓ - Forum Word
- Sed et ses caprices (ou les miens) ✓ - Forum Linux / Unix
- Sed crlf - Astuces et Solutions
- Sed - Remplacement texte par retour à la ligne ? ✓ - Forum Linux / Unix
2 réponses
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