nomina - Intentando escapar de a/for sed en ubuntu
sed linux (4)
El caracter justo después del comando s
no necesita ser a /
. Cuando trabajo con rutas, uso :
como en:
sudo sed ''s:a:b:g'' -i /tmp/test
Estoy tratando de usar sed para reemplazar una ruta en un archivo.
sudo sed ''s/a/b/g'' -i /tmp/test
Sin embargo, la variable es
a = /var/lib and
b = /data/lib
¿Cómo escapo de la barra?
En sed (1), como en vi (1), el ''/'' es simplemente el separador habitual. Se puede escapar con /
, lo que lleva al "síndrome del palillo de dientes inclinado" cuando se mungan los nombres de ruta:
sed -e ''s///var//lib/data//lib/'' ...
Puede usar otro carácter no verbal, por ejemplo '';'':
sed -e ''s;/var/lib;data/lib; ...
Esto debería funcionar
sed -i "s@$a@$b@g" /tmp/test
Dos cosas que debe tener en cuenta:
1) si quieres usar variables en tu línea sed, usa comillas dobles
2) el delimitador podría ser distinto de " /
", por ejemplo @, #, : ...
Puede cambiar el delimitador de sed por ejemplo use #
lugar:
$ sed ''s#/var/lib#data/lib#''
/var/lib
data/lib