Utilisation de sed pour remplacer la valeur dans le fichier de configuration ini [duplicate]

Nov 24 2020

Mon fichier de configuration ressemble à:

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

J'essaye d'utiliser sedpour remplacer la valeur d'URL par une autre. Je suis arrivé à ce qui suit:

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

Mais cela ne semble pas fonctionner, comme je le comprends:

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

Qu'est-ce que je rate? Merci

Réponses

axiac Nov 24 2020 at 00:14

&est un caractère spécial dans la chaîne de remplacement fournie à la scommande de sed. Il représente la chaîne qui correspond à l'ensemble regexutilisé pour la recherche ( URL=.*dans votre exemple).

Afin de se représenter, il doit être échappé avec \:

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

Tapez man sedvotre terminal pour lire sa documentation ou lire la documentation desed online.