ユーザー提供のテキスト ファイル内の一連のプレースホルダー/トークンを、単純なマップまたは環境変数に格納されている対応する値に置き換える効率的な方法を探しています。問題は、テンプレート ファイルがエンド ユーザーによって提供されることです。そのため、コード実行などのリスクなしに、変数の置換のみを行う「安全な」方法を探しています。
Go の標準の「テキスト/テンプレート」は、置換自体には機能しますが、特定のフォーマット要件 (たとえば、キーの前のドット「.」) を課し、その関数呼び出し、パイプラインなどで他の可能性を開きます。
したがって、私が探しているのは、理想的には、テキスト ファイルを構成可能な区切り記号 ("{{}}" または "${}" または "$##$") で解析し、検出されたすべてのトークンを提供されたマップまたはその環境変数値へのルックアップ。Python のstring.Template
( https://docs.python.org/2.6/library/string.html?highlight=string.template#string.Template ) と同様です。
このためにテキスト/テンプレート ライブラリを構成または再利用する簡単な方法はありますか? ユースケースにより適した他のアプローチはありますか? golang 以外のオプション ( 、スクリプトなど) も調べたenvsubtr
のでawk
、sed
何かがより適している場合は、自由に Go の外に出てください。
サンプル入力ファイル ('template.properties'):
var1=$#VAR_1#$
var2=$#VAR_2#$
サンプル入力データ:
VAR_1 = apples
VAR_2 = oranges
処理後に期待される出力:
var1=apples
var2=oranges