1. 程式人生 > >shell指令碼sed命令匹配當前行修改下一行修改xml配置檔案

shell指令碼sed命令匹配當前行修改下一行修改xml配置檔案

原命令如下:

sed -i '/>javax.jdo.option.ConnectionURL</{n;s#.*#<value>jdbc:mysql://${host_name}:3306/hive?createDatabaseIfNotExist=true&amp;useSSL=false</value>#}' /opt/arbd/hive-1.1.0/conf/hive-site.xml

發現不能引用變數值,於是改為雙引號:

sed -i "/>javax.jdo.option.ConnectionURL</{n;s#.*#<value>jdbc:mysql://${host_name}:3306/hive?createDatabaseIfNotExist=true&amp;useSSL=false</value>#}" /opt/arbd/hive-1.1.0/conf/hive-site.xml

但是發現sed命令中的&會被視為正則中的結尾含義。

於是給&加上轉義:\&。命令變為:

sed -i "/>javax.jdo.option.ConnectionURL</{n;s#.*#<value>jdbc:mysql://${host_name}:3306/hive?createDatabaseIfNotExist=true\&amp;useSSL=false</value>#}" /opt/arbd/hive-1.1.0/conf/hive-site.xml

命令中用#代替了/來區分sed命令的/和字串/。