Sed 使用该键的环境值构建键列表

Sed construct populate list of keys with the environment value of that key

我在文件中有一个键列表:

FOO
BAR
BAZ

我正在尝试构建一个 sed 命令以将每一行替换为:

FOO=$FOO
BAR=$BAR
BAZ=$BAZ

其中右侧是具有该名称的环境变量的值。例如设置环境变量:

export FOO=1
export BAR=2
export BAZ=3

在运行 sed 之后,FILE 应该是:

FOO=1
BAR=2
BAZ=3

我试过这些:

还有一些其他变体。问题很明显是捕获组是如何转义的,但我不知道如何解决它。

您无法按照您尝试的方式访问 sed 中的环境变量,但使用 awk 非常简单:

awk '{ print [=10=] in ENVIRON ? [=10=]"="ENVIRON[[=10=]] : [=10=] } FILE >FILE.new \
&& mv FILE.new FILE || { echo oops; rm FILE.new; }

这可能对你有用 (GNU sed):

sed 's/.*/echo "&=$&"/e' file

在替换命令中使用匹配返回参考 &e 评估标志。