J'essaie d'écrire une commande sed pour remplacer une ligne dans un fichier. Le remplacement de sed nécessitait le répertoire de travail actuel, ce qui commence à rendre la commande un peu compliquée à cause des caractères qui doivent être échappés.
Voici ce que j'ai jusqu'à présent :
sed -i "s/^log.*$/log `echo pwd | sed 's/\//\\\//g'`\/redis\/redis.log\/" ./conf/redis.conf
Cependant, cela me donne une erreur avec sed.
J'ai essayé de le décomposer en commandes plus simples :
[email protected]:~/project$pwd | sed 's/\//\\\//g'
\/home\/user\/project
Cela renvoie ce que je veux, mais lorsque j'essaie d'ajouter une substitution de commande, cela échoue :
[email protected]:~/project$ echo `pwd | sed 's/\//\\\//g'`
sed: -e expression #1, char 9: unknown option to `s'
Toute aide serait appréciée
Réponse acceptée :
Si j'ai bien compris, vous essayez de remplacer les barres obliques (/
) avec une barre oblique échappée (\/
) ? Cela fait beaucoup beaucoup plus facile à gérer si vous n'utilisez pas /
comme délimiteur dans sed
:
~ $ pwd | sed 's_/_\\/_g'`
\/home\/username
~ $ echo "$( pwd | sed 's_/_\\/_g' )"
\/home\/username