使用 sed 替换特定字符串后的引号内的字符串

Replace a string within quotes that succeeds a specific string using sed

我有以下行:

KAFKA_JMX_OPTS="-Dcom.sun.management.jmxremote.authenticate -Dcom.sun.management.jmxremote.ssl=false "

但我尝试将其替换为:

KAFKA_JMX_OPTS="-Dcom.sun.management.jmxremote=true -Djava.rmi.server.hostname=x.x.x.x -Dremoting.bind_by_host=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=假“

我尝试在 https://unix.stackexchange.com/questions/66878/how-can-i-replace-text-after-a-specific-word-using-sed 之后使用 sed,但没有成功。

问题是由于双引号引起的。感谢任何帮助。

如果你有

line='KAFKA_JMX_OPTS="-Dcom.sun.management.jmxremote.authenticate  -Dcom.sun.management.jmxremote.ssl=false "'

那你可以做

$ line=$(sed '
    s/"/"Dcom.sun.management.jmxremote=true -Djava.rmi.server.hostname=x.x.x.x /
    s/authenticate/&=false/
' <<<"$line")
$ echo "$line"
KAFKA_JMX_OPTS="Dcom.sun.management.jmxremote=true -Djava.rmi.server.hostname=x.x.x.x -Dcom.sun.management.jmxremote.authenticate=false  -Dcom.sun.management.jmxremote.ssl=false "