【发布时间】:2015-11-25 00:19:24
【问题描述】:
所以我有一些包含占位符值的文件,例如 @USER@ 或 @SHELL@(全大写变量名,包含在 @'s 中,代表环境变量名)。我想要做的是将这些占位符替换为它们引用的环境变量的实际值。
过去我看到这种事情做的时候,具体的变量通常是硬编码的,例如:
sed -e 's/@SOME_VARIABLE@/$SOME_VALUE/' <infile >outfile
但这不适用于我当前的用例,因为我想更灵活地支持任意替换。我在 python 中编写了这段代码,这正是我想要的:
import re
import fileinput
from os import environ
from sys import stdout
pat = re.compile(r'@([A-Z_]+)@')
for line in fileinput.input():
stdout.write(pat.sub(lambda match: environ[match.group(1)], line))
但如果可以的话,我宁愿不使用 python。当然有一种方法可以使用 perl 或 sed 单线器来做到这一点?
【问题讨论】:
标签: python bash perl sed environment-variables