Мне нужно заменить слово между цитатами после равного знака, используя SED. Но я не могу сделать это, пожалуйста, предложите? # mfsbsd.rootpwhash = "" выглядит как # mfsbsd.rootpwhash = "WSNK & * 32JK"
cat loader | sed -e 's|["\'']||g' | sed 's/rootpwhash="[^"]*"/rootpwhash="abcd"/'
, Возможно, вопрос систематического выхода " с
\символ? Это работает на меня:
$ 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"
Вы можете использовать Двойные кавычки , и избежать специальных символов в вашей заместительной переменной
$ export TESTVAR="wsnk\&\*32jk"
$ cat loader | sed -e "s/\".*\"/\"$TESTVAR\"/"
#mfsbsd.rootpwhash="wsnk&*32jk"
Если ваше значение ключа структурирована по одному на линию, вам нужно только соответствовать ключей. I.e., если вам не нужно совпадение . Значение тоже.
text=new; cat loader | \
sed "s/\(mfsbsd.rootpwhash\)=.*/\1=\"$text\"/"