在linux系统上,sed的查找、替换、删除功能有着强大的实用性:
- 安装应用程序时,输入某些参数替换默认参数。
- 启动应用程序时,读取配置文件中的变量。
- 删除某些文件中的空行或者删除脚本中"#"开始的注释行。
1. 输入参数,替换配置文件中的默认参数
eg. 在log4j配置文件log4j.properties中:
log4j.appender.FileApp=org.apache.log4j.RollingFileAppender
log4j.appender.FileApp.File=/tmp/log/app.log
log4j.appender.FileApp.MaxFileSize=20MB
log4j.appender.FileApp.MaxBackupIndex=10
log4j.appender.FileApp.layout=org.apache.log4j.PatternLayout
log4j.appender.FileApp.layout.ConversionPattern=%d{ISO8601} %r [%t] %-5p %c{1} - %m%n
默认文件输出路径为/tmp/log/app.log,用户安装的时候可以指定一个其他文件路径的脚本:
read input
sed -i "s/ log4j.appender.FileApp.File=.*/ log4j.appender.FileApp.File=$input/g " log4j.properties
2. shell读取配置文件参数
eg. 在Spring的配置文件applicationContext.properties中:
## MySQL DB part
mysql.db.user=root
mysql.db.password=password
mysql.db.schema=test
读取MySQL用户名、密码等的脚本:
ConfigFile=applicationContext.properties
UserLine=`sed -n "/mysql.db.user/p" $ConfigFile`
User=`echo ${UserLine#*=}`
echo $User #输出结果root
3. 删除applicationContext.properties中#开始的行:
sed -i "/^#/"d applicationContext.properties