regex – 使用sed扩展环境变量
发布时间:2020-12-13 22:58:25 所属栏目:Linux 来源:网络整理
导读:我正在尝试编写一个sed命令来替换文件中的标记,其中包含来自环境变量的值,如下所示: export my_var=fooecho 'something {{my_var}} bar' | sed -r "s/{{(.*?)}}/$1/g" 我想获取令牌的名称(在本例中为my_var),然后用相同的名称替换环境变量的值. 这可能
我正在尝试编写一个sed命令来替换文件中的标记,其中包含来自环境变量的值,如下所示:
export my_var=foo echo 'something {{my_var}} bar' | sed -r "s/{{(.*?)}}/$1/g" 我想获取令牌的名称(在本例中为my_var),然后用相同的名称替换环境变量的值. 这可能吗?目前上面打印的东西是$my_var bar而不是foo bar,这就是我想要的东西. 我愿意使用其他工具,例如awk,如果用sed不可能的话. 解决方法
用$my_var替换{{my_var}}后,需要显式发送字符串以进行第二轮替换.
与eval $eval echo "$(echo 'something {{my_var}} bar' | sed 's/{{([^}]+)}}/$1/g')" something foo bar 或者用子壳 $echo 'echo something {{my_var}} bar' | sed 's/{{([^}]+)}}/$1/g' | sh something foo bar Perl只能对替换文本进行第二轮评估,而不是整个输出(使用s /// function的e修饰符): $echo 'something {{my_var}} bar' | perl -pe 's/{{(w+)}}/$ENV{$1}/eg' something foo bar (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |