Estoy tratando de escribir un comando sed para reemplazar una línea en un archivo. El reemplazo de sed requería el directorio de trabajo actual, lo que comienza a complicar un poco el comando debido a los caracteres que deben escaparse.
Esto es lo que tengo hasta ahora:
sed -i "s/^log.*$/log `echo pwd | sed 's/\//\\\//g'`\/redis\/redis.log\/" ./conf/redis.conf
Sin embargo, esto me da un error con sed.
He intentado dividirlo en comandos más fáciles:
[email protected]:~/project$pwd | sed 's/\//\\\//g'
\/home\/user\/project
Esto devuelve lo que quiero, pero cuando intento agregar la sustitución de comandos, falla:
[email protected]:~/project$ echo `pwd | sed 's/\//\\\//g'`
sed: -e expression #1, char 9: unknown option to `s'
Cualquier ayuda sería apreciada
Respuesta aceptada:
Si estoy leyendo bien, está intentando reemplazar las barras inclinadas (/
) con una barra inclinada con escape (\/
)? Esto obtiene mucho más fácil de manejar si no usa /
como su delimitador en sed
:
~ $ pwd | sed 's_/_\\/_g'`
\/home\/username
~ $ echo "$( pwd | sed 's_/_\\/_g' )"
\/home\/username