Как заменить слово между двойными кавычками?

Мне нужно заменить слово между цитатами после равного знака, используя SED. Но я не могу сделать это, пожалуйста, предложите? # mfsbsd.rootpwhash = "" выглядит как # mfsbsd.rootpwhash = "WSNK & * 32JK"

cat loader | sed -e 's|["\'']||g' | sed 's/rootpwhash="[^"]*"/rootpwhash="abcd"/'
0
задан 9 March 2021 в 19:03

3 ответа

, Возможно, вопрос систематического выхода " с \символ? Это работает на меня:

$ echo Name=\"\" | sed -e 's/\"\"/\"This should be filled in\"/'Name="This should be filled in"

Для замены чего-либо, что является первоначально между "" :

$ echo Name=\"Original\" | sed -e 's/\".*\"/\"This should be filled in\"/'
Name="This should be filled in"
0
ответ дан 18 March 2021 в 23:27

Вы можете использовать Двойные кавычки , и избежать специальных символов в вашей заместительной переменной

$ export TESTVAR="wsnk\&\*32jk"
$ cat loader | sed -e "s/\".*\"/\"$TESTVAR\"/"
#mfsbsd.rootpwhash="wsnk&*32jk"
0
ответ дан 18 March 2021 в 23:27

Если ваше значение ключа структурирована по одному на линию, вам нужно только соответствовать ключей. I.e., если вам не нужно совпадение . Значение тоже.

text=new; cat loader | \
sed "s/\(mfsbsd.rootpwhash\)=.*/\1=\"$text\"/"
0
ответ дан 18 March 2021 в 23:27

Другие вопросы по тегам:

Похожие вопросы: