Es mejor usar bash que sed
si las cadenas tienen caracteres RegExp.
echo ${first_string/Suzi/$second_string}
Es portátil para Windows y funciona con al menos tan antiguo como Bash 3.1.
Para demostrar que no necesita preocuparse mucho por escapar, cambiemos esto:
/home/name/foo/bar
Dentro de esto:
~/foo/bar
Pero solo si /home/name
está al principio. No necesitamos sed
!
Dado que bash nos da variables mágicas $PWD
y $HOME
, podemos:
echo "${PWD/#$HOME/~}"
EDITAR: Gracias por Mark Haferkamp en los comentarios por la nota sobre citar / escapar ~
. *
Note como la variable $HOME
contiene barras, pero esto no rompió nada.
Otras lecturas: Guía avanzada de secuencias de comandos de Bash.
Si usa sed
es imprescindible, asegúrese de escapar de cada personaje.