linux – 替换属性文件中的环境变量
发布时间:2020-12-13 19:40:20 所属栏目:Linux 来源:网络整理
导读:在 Linux中,说我有以下文件(例如conf.properties): HOST_URL=http://$HOSTNAMESTD_CONFIG=http://$HOSTNAME/configUSER_CONFIG=http://$HOSTNAME/config/$unconfigured 我想创建另一个文件,所有的环境变量被替换…例如.说环境变量$HOSTNAME是’myhost’,$un
在
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,以免混淆读者) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |