Linux   发布时间:2022-03-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了regex – 使用sed扩展环境变量大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我正在尝试编写一个sed命令来替换文件中的标记,其中包含来自环境变量的值,如下所示: export my_var=foo echo 'something {{my_var}} bar' | sed -r "s/\{\{(.*?)\}\}/$\1/g" 我想获取令牌的名称(在本例中为my_var),然后用相同的名称替换环境变量的值. 这可能吗?目前上面打印的东西是$my_var bar而不是foo
我正在尝试编写一个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

大佬总结

以上是大佬教程为你收集整理的regex – 使用sed扩展环境变量全部内容,希望文章能够帮你解决regex – 使用sed扩展环境变量所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。