Usando sed para reemplazar el valor en el archivo de configuración ini [duplicado]

Nov 24 2020

Mi archivo de configuración se ve así:

KEY1=VALUE1
URL=https://drive.google.com/uc?export=download&id=myhash
KEY3=VALUE3

Estoy tratando de usar sedpara reemplazar el valor de la URL con otro. Llegué a lo siguiente:

sed -i.bak 's@URL=.*@URL=https://drive.google.com/uc?export=download&id=mynewhash@g' file.txt

Pero eso no parece funcionar, ya que estoy recibiendo:

URL=https://drive.google.com/uc?export=downloadURL=https://drive.google.com/uc?export=download&id=mynewhash=myhash

¿Qué me estoy perdiendo? Gracias

Respuestas

axiac Nov 24 2020 at 00:14

&es un carácter especial en la cadena de reemplazo proporcionada al scomando de sed. Representa la cadena que coincide con la totalidad regexutilizada para buscar ( URL=.*en su ejemplo).

Para representarse a sí mismo, debe escaparse con \:

sed -i.bak 's@URL=.*@URL=https://drive.google.com/uc?export=download\&id=mynewhash@g' file.txt

Escriba man sedsu terminal para leer su documentación o leer la documentación ensed línea.