我的一个启动脚本(abc.sh)中有以下几行:

runuser root -c "export CATALINA_OPTS=\"-Xms5g -Xmx10g\"; \
    nohup $CATALINA_HOME/bin/startup.sh $CATALINA_HOME > /dev/null &"

我想用下面的行替换-Xms5g-Xmx10g:
-Xms500m -Xmx1g -Xrunjdwp:transport=dt_socket,address=9000,server=y,suspend=n

我编写了一个脚本myscript.sh,其中包含以下代码:
#!/bin/bash
sed -i~ 's/-Xms5g -Xmx10g/-Xms500m \
    -Xmx1g -Xrunjdwp:transport=dt_socket,address=9000,server=y,suspend=n' ./abc.sh

但它给了我错误:
sed: -e expression #1, char 95: unterminated `s' command

有人能帮我纠正这个命令吗?
注意:abc.sh中还有其他几行
谢谢!

最佳答案

您未能在结尾处添加/

sed -i~ 's/-Xms5g\s*-Xmx10g/-Xms500m -Xmx1g \
    -Xrunjdwp:transport=dt_socket,address=9000,server=y,suspend=n/' ./abc.sh

模式应该如下:s/regexp/replacement/

关于linux - 使用sed替换文件中的内联字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7816843/

10-12 06:22