shell脚本 sed替换shell脚本某一行内容的用法

今天接到这样的一个需求 要求开发和生产环境执行的start和stop脚本不一样 (开发脚本带上skywalking和jvm监控 产品环境不带)

  • sed -i ‘s/oldString/newString’ filepath
  • sed -i ‘s/oldString/newString/g’ filepath
  • 分别是 第一个:替换filepath的oldString为newString 第二个:替换filepath的每一个oldString为newString

oldSring可以正则匹配 例如ps -ef.* 就是匹配ps -ef开头的一行

    ###########################替换atd-webcore.sh中的执行脚本#################
    msg1="ps -ef | grep geyecloud-web | grep -v grep | awk '{print $2}' | xargs kill -9 \&"
    sed -i "s/ps -ef.*/${msg1}/" ./bin/atd-webcore.sh
    msg2="nohup java -XX:+UseG1GC -Xms2048M -Xmx6096M -XX:MaxGCPauseMillis=50 -jar \${jar_dir}\/geyecloud-web-2.0.0.jar 2\>\&1 \&"
    sed -i "s/nohup java.*/${msg2}/" ./bin/atd-webcore.sh

注意 特殊字符要加转义字符\ 例如& "


版权声明:本文为qq_37076940原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。