当前位置: 技术问答>linux和unix
如何使用shell脚本替换不确定文本信息?实例!
来源: 互联网 发布时间:2016-05-17
本文导语: 如何使用shell脚本中的awk或者sed替换如下文件信息: MySqlDS jdbc:mysql://172.19.80.81:3306/jbossdb com.mysql.jdbc.Driver root 123 − 需要替换其中的ip地址(172.19.80.81,但是此地址不是固定的,也就是说不一定是80.81,...
如何使用shell脚本中的awk或者sed替换如下文件信息:
MySqlDS
jdbc:mysql://172.19.80.81:3306/jbossdb
com.mysql.jdbc.Driver
root
123
−
需要替换其中的ip地址(172.19.80.81,但是此地址不是固定的,也就是说不一定是80.81,也就是最好通过前后内容来替换),新ip地址是一个变量($IP,也是动态获得的,此处不用管如何获得,调用即可),请问如何编写shell脚本替换?
MySqlDS
jdbc:mysql://172.19.80.81:3306/jbossdb
com.mysql.jdbc.Driver
root
123
−
需要替换其中的ip地址(172.19.80.81,但是此地址不是固定的,也就是说不一定是80.81,也就是最好通过前后内容来替换),新ip地址是一个变量($IP,也是动态获得的,此处不用管如何获得,调用即可),请问如何编写shell脚本替换?
|
sed 's/mysql://.*:3306/jbossdb/mysql://1.2.3.4:3306/jbossdb/g' 文件名
sed替换的语法是
sed 's/源/替换成的目标/g' 文件名
把你要替换的可变内容用.*代替,前面加上一些,后面加上一些来保证不会替换错误
最后的g表示替换多个,如果只有一个不用加g
/有特殊意义,所以如果你的内容中有/需要在前面加上转义
sed替换的语法是
sed 's/源/替换成的目标/g' 文件名
把你要替换的可变内容用.*代替,前面加上一些,后面加上一些来保证不会替换错误
最后的g表示替换多个,如果只有一个不用加g
/有特殊意义,所以如果你的内容中有/需要在前面加上转义
|
#!/bin/sh
newip="new-ip-address"
filename="your-file-name"
eval "sed -i -e '//s/172.19.[0-9]*.[0-9]*/$newip/g' $filename"
newip="new-ip-address"
filename="your-file-name"
eval "sed -i -e '//s/172.19.[0-9]*.[0-9]*/$newip/g' $filename"