前言:每隔几天就会出现一个这种类型的问题,用 很容易解决sed
,但需要时间来解释。我正在写这个问题和答案,所以我以后可以参考这个通用解决方案,只解释针对特定情况的适应。随意贡献。
我有带有变量定义的文件。变量由大写字母或下划线组成_
,它们的值跟在:=
. 这些值可以包含其他变量。这是Gnom.def
:
NAME:=Gnom
FULL_NAME:=$FIRST_NAME $NAME
FIRST_NAME:=Sman
STREET:=Mainstreet 42
TOWN:=Nowhere
BIRTHDAY:=May 1st, 1999
Run Code Online (Sandbox Code Playgroud)
然后是另一个form.txt
带有模板表单的文件:
$NAME
Full name: $FULL_NAME
Address: $STREET in $TOWN
Birthday: $BIRTHDAY
Don't be confused by $NAMES
Run Code Online (Sandbox Code Playgroud)
现在我想要一个脚本,它用$
另一个文件中的定义递归地替换表单中的变量(用和标识符标记),如有必要,所以我得到了这个文本:
Gnom
Full name: Sman Gnom
Address: Mainstreet 42 in Nowhere
Birthday: May 1st, 1999
Don't be confused by $NAMES
Run Code Online (Sandbox Code Playgroud)
最后一行是为了确保不会意外替换变量的子字符串。