Bashを使用した構成(ネストされた構成を含む)ファイルの読み取り

Bashを使用した構成(ネストされた構成を含む)ファイルの読み取り

.conf次のデータを含むファイルがあります。

category1 {
  Key1="value1"
  Key2="value2"
}

Bashでこの値をどのように読み取ることができますか?

ベストアンサー1

HCLパーサーは、あなたが投稿したデータを読むことができます。 HCLは、構成ファイルで使用されるHashiCorpの構造化文書形式です(例:ここ)。

HCLをJSONなどのより一般的な構造形式に変換するために使用できるツールがあります。そのようなツールの一つはyjhttps://github.com/sclevine/yj)。

$ cat file
category1 {
  Key1="value1"
  Key2="value2"
}
$ yj -cj <file
{"category1":[{"Key1":"value1","Key2":"value2"}]}

この-cjオプションはyjHCLからJSONに変換します(yj -h利用可能なオプションの完全なリストについては参考資料を参照)。

これにより、セクションが配列にyj変換されます。category1入力HCLファイルに追加category1セクションがある場合、追加セクションは配列の別の要素になります。

JSON形式に変換されたら、通常のJSONプロセッサを使用してjq必要なデータを抽出できます。

$ yj -cj <file | jq -r '.category1[0].Key1'
value1

この式は、jq配列の最初の要素のキーに対応する値を選択します。このオプションを使用すると、JSONでエンコードされた引用符付き文字列ではなく、「生データ」が返されます。Key1category1srjq

これはコマンド置換によって変数として抽出できます。

$ val1=$(yj -cj <file | jq -r '.category1[0].Key1')
$ printf '1st value = %s\n' "$val1"
1st value = value1

おすすめ記事