Chr*_*her 6 search text-processing replace
我有一个文本(配置)文件,但不幸的是,读取该文件的程序不允许使用任何类型的变量。所以我想使用一个预处理器,在将配置文件传递给程序之前替换配置文件中的一组占位符。
我可以以任何我想要的方式定义变量的格式(例如§SOME_DIR
)。如果我只有几个变量,我可能会使用sed
:
sed -e "s*§SOME_DIR*$SOME_DIR*g" my.conf | target_prog
Run Code Online (Sandbox Code Playgroud)
但是变量列表很长,而且应该很容易配置 - 所以我更愿意把变量放在一个属性文件中,比如
SOME_DIR=...
OTHER_DIR=...
...
Run Code Online (Sandbox Code Playgroud)
然后打电话
some_replace_tool my.properties my.conf | target_prog
Run Code Online (Sandbox Code Playgroud)
我正在寻找“some_replace_tool”。有任何想法吗?
简单宏扩展最广泛、最可移植的方式可能是 C 预处理器:
cat my.properties my.conf | cpp -P -DSOME_DIR=/a/b -DOTHER_DIR=/c | target_prog
Run Code Online (Sandbox Code Playgroud)
请注意,您必须cat
在此处使用,因为cpp
仅接受一个输入文件作为参数。
但正如您所写,您有很多变量,您可能更喜欢将它们放入文件中:
#define SOME_DIR /a/b
#define OTHER_DIR /c
Run Code Online (Sandbox Code Playgroud)
然后将其传递给cpp
:
cat my.properties my.conf | cpp -P -imacros definition.cpp | target_prog
Run Code Online (Sandbox Code Playgroud)