我需要使用 sed 替换等号后引号之间的单词。但我无法做到这一点,请提出建议?#mfsbsd.rootpwhash="" 看起来像 #mfsbsd.rootpwhash="wsnk&*32jk"
cat loader | sed -e 's|["\'']||g' | sed 's/rootpwhash="[^"]*"/rootpwhash="abcd"/'
答案1
也许是系统地转义 \ 字符的问题" with the
?这对我有用:
$ 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"
答案2
如果你的核心价值每行一个对,你只需要匹配关键部分。也就是说,如果你不必匹配价值也是如此。
text=new; cat loader | \
sed "s/\(mfsbsd.rootpwhash\)=.*/\1=\"$text\"/"
答案3
您可以使用双引号,并在替代变量中转义特殊字符
$ export TESTVAR="wsnk\&\*32jk"
$ cat loader | sed -e "s/\".*\"/\"$TESTVAR\"/"
#mfsbsd.rootpwhash="wsnk&*32jk"