如何替换双引号之间的单词?

如何替换双引号之间的单词?

我需要使用 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"

相关内容