今天写了一个脚本,主要是完成一个文件内容的插入与替换,所以用到了sed命令,下面是脚本中用到的四个sed命令;
第一条命令:
content里面含有$,/等特殊字符
sed -i '/<properties>/a\'"`echo ${content}`" config.xml
第二条命令:
b=http://www.baidu.com
sed -i 's#${jenkinsVo.reposUrl}'#${b}#g config.xml
第三条命令:
sed -i '/<remote>/d' config.xml
第四条命令:
sed -i '/<hudson.scm.SubversionSCM_-ModuleLocation>/a\<remote>${reposUrl}${revision}</remote>' config.xml
第一条命令中是一个插入命令,第四条也是同样的,但第四条中的插入字符串不是一个变量,所以按照sed的正常语法写就可以了,第一条命令中的插入字符是一个变量,而且变量中还含有特殊字符,如果是想变量里面的内容当成普通字符串操作,就需要如第一条那样写,如果不是,则可以直接写成“${content}”
第二条命令中的替换字符含有/,这个是sed用来做分隔符的,所以会导致替换出现问题,sed也支持#做分隔符,所以此处用#来做分割,顺利解决问题;