Saltar al contenido

bash: reemplaza una subcadena por otra cadena en el script de shell

octubre 18, 2021
apple touch icon@2

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.

close