Używanie seda do zamiany wartości w pliku konfiguracyjnym ini [duplikat]

Nov 24 2020

Mój plik konfiguracyjny wygląda następująco:

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

Próbuję sedzastąpić wartość adresu URL inną. Dotarłem do następujących:

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

Ale to nie działa, ponieważ otrzymuję:

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

czego mi brakuje? Dzięki

Odpowiedzi

axiac Nov 24 2020 at 00:14

&jest specjalnym znakiem w łańcuchu zastępczym dostarczonym do spolecenia sed. Reprezentuje ciąg, który pasuje do całości regexużytego do wyszukiwania ( URL=.*w twoim przykładzie).

Aby się przedstawić, należy przed nim uciec \:

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

Wpisz man sedswój terminal, aby przeczytać jego dokumentację lub przeczytać dokumentacjęsed online.