GNU/Linux >> Tutoriales Linux >  >> Linux

¿Escapar de Blackslash en Sed?

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

Linux
  1. ¿Cómo reemplazar una cadena en un archivo (s)?

  2. ¿Cómo usar Sed para reemplazar una cadena de varias líneas?

  3. Adición Con 'sed'?

  4. ¿Puede Sed reemplazar los caracteres de nueva línea?

  5. ¿Sed On Osx Insert en cierta línea?

Sustitución de cadena en Bash

CÓMO UTILIZAR EL EDITOR SED

Los 20 mejores comandos sed para usar

Ejemplos de comandos sed en Linux

sed:comando no encontrado

Escapar correctamente la barra diagonal en el script bash para usar con sed