linux – 替换属性文件中的环境变量
发布时间:2021-02-20 18:07:08 所属栏目:Linux 来源:互联网
导读:在 Linux中,说我有以下文件(例如conf.properties): HOST_URL=http://$HOSTNAMESTD_CONFIG=http://$HOSTNAME/configUSER_CONFIG=http://$HOSTNAME/config/$unconfigured 我想创建另一个文件,所有的环境变量被替换…例如.说环境变量$HOSTNAME是’myhost’,$unc
在 Linux中,说我有以下文件(例如conf.properties): HOST_URL=http://$HOSTNAME STD_CONFIG=http://$HOSTNAME/config USER_CONFIG=http://$HOSTNAME/config/$unconfigured 我想创建另一个文件,所有的环境变量被替换…例如.说环境变量$HOSTNAME是’myhost’,$unconfigured没有设置,脚本应该产生以下输出: HOST_URL=http://myhost STD_CONFIG=http://myhost/config USER_CONFIG=http://myhost/config/ 我在想,这可以通过一种简单的单线程来实现,有一些sed / awk魔法,但是我不是专家,我的搜索是静静的,所以感谢任何帮助. 编辑: 我应该提到这个文件真的可以是任何格式的文本文件,例如xml.我只是希望用环境中当前设置的任何东西来替换任何看起来像env变量的东西. 解决方法sed 's/$HOSTNAME/myhost/g;s/$unconfigured//g' yourfile.txt > another_file.txt 更新: 根据您的问题的更新,这不会是一个很好的解决方案. update2: 这是基于answer to a related question.我已经入侵(我不熟悉perl)删除未定义的vars. perl -p -e 's/${([^}]+)}/defined $ENV{$1} ? $ENV{$1} : $&/eg; s/${([^}]+)}//eg' yourfile.txt 应该适用于任何输入文本文件,但是您将需要使用简化字符串匹配的${…}格式定义vars. (关于eval的恶意移动到separate post,以免混淆读者) (编辑:台州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- linux – “grep -rnw”:在所有文件中搜索字符串
- linux – Bash for循环数组,文件来自(*)只显示第一个元素
- linux – 支持Planar图形测试的开源图形绘图程序?
- linux – 在Ubuntu服务器12.04.4上编译Node.js v0.11.12-re
- 是否可以在Linux上更改命名管道的大小?
- linux – 什么是汇编中的%gs
- linux – 如何发送一个字节(或字节)来测试在我的应用程序中
- linux – 检测我的共享库的两个ABI不兼容版本加载到单个程序
- 如何在linux中使用python搜索可执行文件?
- linux – 在bash脚本中使用iperf3获取时间戳