shell指令碼sed命令匹配當前行修改下一行修改xml配置檔案
阿新 • • 發佈:2018-12-20
原命令如下:
sed -i '/>javax.jdo.option.ConnectionURL</{n;s#.*#<value>jdbc:mysql://${host_name}:3306/hive?createDatabaseIfNotExist=true&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&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\&useSSL=false</value>#}" /opt/arbd/hive-1.1.0/conf/hive-site.xml
命令中用#代替了/來區分sed命令的/和字串/。