如何在Sed Command UNIX

时间:2015-10-27 18:28:43

标签: unix sed

我想使用SED在第16行输入一行 -javaagent:/prod/msp/domains/dynamicapp_domains/AppDynamic/AppAgent/ver4.1.4.3/javaagent.jar -Dprobe.id = 10.204.198.1_msp_dynamicapp_tomcat_01 -Dprobe.group = 10.204.198.1T&#34 ;;

我用过:

HOST=$(hostname)

sed -i '16iPROBE_OPTS="-javaagent:/prod/msp/domains/dynamicapp_domains/AppDynamic/AppAgent/ver4.1.4.3/javaagent.jar -Dprobe.id=$HOST_msp_dynamicapp_tomcat_01 -Dprobe.group=$HOST";' startup.sh

但是插入$HOST原样。

1 个答案:

答案 0 :(得分:0)

问题是整个字符串用单引号括起来。所以$是逃脱的。您可以关闭单引号,将$HOST括在双引号中并再次打开单引号。

所以试试这个

sed -i '16iPROBE_OPTS="-javaagent:/prod/msp/domains/dynamicapp_domains /AppDynamic/AppAgent/ver4.1.4.3/javaagent.jar -Dprobe.id='"$HOST"'_msp_dynamicapp_tomcat_01 -Dprobe.group=$HOST";' startup.sh

如果$HOST不包含空格

HOST周围的双引号并不重要

还有一条评论:使用$HOST_msp_dynamic...会导致很难找到错误。这是指环境变量HOST_msp_dynamic...,因为_是环境变量字符。请改用${HOST}_msp_dynamic...