使用bash / sed搜索和替换文件中的变量
发布时间:2020-12-15 21:41:30 所属栏目:安全 来源:网络整理
导读:我正在尝试编写一个bash脚本(script.sh)来搜索和替换in??put.sh文件中的一些变量.但是我只需要修改variable_list文件中存在的变量,并保留其他变量. variable_list ${user} ${dbname} input.sh username=${user} password=${password} dbname=${dbname} 预期
我正在尝试编写一个bash脚本(script.sh)来搜索和替换in??put.sh文件中的一些变量.但是我只需要修改variable_list文件中存在的变量,并保留其他变量.
variable_list ${user} ${dbname} input.sh username=${user} password=${password} dbname=${dbname} 预期的输出文件 username=oracle password=${password} > This line won't be changed as this variable(${password}) is not in variable_list file dbname=oracle 以下是我尝试使用的脚本,但我无法找到正确的sed表达式 script.sh export user=oracle export password=oracle123 export dbname=oracle variable='variable_list' while read line ; do if [[ -n $line ]] then sed -i 's/$line/$line/g' input.sh > output.sh fi done < "$variable" 解决方法
这可能有效:
#!/bin/bash export user=oracle export password=oracle123 export dbname=oracle variable='variable_list' while read line ; do if [[ -n $line ]] then exp=$(sed -e 's/$/&/g' <<< "$line") var=$(sed -e 's/${([^}]+)}/1/' <<< "$line") sed -i "s/$exp/${!var}/g" input.sh fi done < "$variable" 第一个sed表达式转义$是一个正则表达式元字符.第二个只提取变量名,然后我们使用间接获取当前shell中的值并在sed表达式中使用它. 编辑 而不是重写文件这么多次,这样做可能更有效,为sed构建参数列表: #!/bin/bash export user=oracle export password=oracle123 export dbname=oracle while read var do exp=$(sed -e 's/$/&/g' <<< "$var") var=$(sed -e 's/${([^}]+)}/1/' <<< "$var") args+=("-e s/$exp/${!var}/g") done < "variable_list" sed "${args[@]}" input.sh > output.sh (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- shell脚本查询某一目录的某一部分文件并且拷贝到其他目录(
- WebService会话Session的管理
- VIM ctrlp.vim插件:如何重新扫描文件?
- WebService航班查询
- 《数据结构》线性表:顺序存储结构(顺序表的)实现示例代码
- angular2 material paginator MatPaginator MatPaginatorIn
- shell – 在服务器上运行java jar文件作为后台进程
- 自定义组件之属性(Property)的性质(Attribute)介绍(一
- 使用Play2 / Scala进行定期WS调用以提供Enumerator的最佳方
- 调用webservice超时问题的解决