texto sustituir script reemplazar para linea especiales espacios eliminar completa comando caracteres blanco bash sed escaping

bash - sustituir - ¿Cómo usar SED para buscar y reemplazar cadenas de URL con el carácter "/" en las cadenas de destino?



sed reemplazar linea completa (2)

Esta pregunta ya tiene una respuesta aquí:

Estoy intentando usar SED a través de OS X Terminal para realizar un descubrimiento y reemplazo.

Imagina que tengo esta cadena llena de todo el archivo de texto: http://www.find.com/page

Y quiero reemplazarlo con esta cadena: http://www.replace.com/page

Tengo problemas porque no estoy seguro de cómo escapar o usar el carácter "/" en mis cadenas. Por ejemplo, si simplemente quería encontrar "gato" y reemplazarlo por "perro", he encontrado el siguiente comando que funciona perfectamente:

sed -i '''' ''s/cat/dog/g'' file.txt

¿Alguien tiene alguna idea sobre cómo lograr la misma funcionalidad solo en lugar de que cat y dog ​​tengan cadenas o URL que contengan el carácter "/"? Probé muchas formas diferentes de escapar de los caracteres "/" pero parece que SED ya no puede "encontrar" la cadena y no realiza ninguna acción de búsqueda y reemplazo.

Cualquier ayuda o consejo es muy apreciado.

¡Gracias!


/ no es el delimitador en los comandos sed , es solo uno de los posibles. Para este ejemplo, puede usar , por ejemplo , lugar , ya que no entra en conflicto con sus cadenas;

echo ''I think http://www.find.com/page is my favorite'' | sed ''s,http://www.find.com/page,http://www.replace.com/page,g''


sed puede tomar lo que sigue a la "s" como separador. Como está trabajando con URL , es una buena práctica usar un delimitador diferente de / para no confundir cuando finaliza su sustitución y comienza el reemplazo.

Sin embargo, una vez dicho esto, definitivamente puede usar / si lo desea también. Solo necesitas escapar del literal / .

Entonces, puedes hacer:

sed ''s/http:////www.find.com//page/http:////www.replace.com//page/g'' input_file

o use un delimitador diferente para evitar que su sed críptica sea más críptica.

sed ''s#http://www.find.com/page#http://www.replace.com/page#g'' input_file