使用sed替换文件中的内联字符串

时间:2011-10-19 05:17:48

标签: linux shell sed

我在我的一个启动脚本(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中还有其他几行

谢谢!

1 个答案:

答案 0 :(得分:1)

您最后未能添加/

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

模式应该是这样的:s/regexp/replacement/