.conf
次のデータを含むファイルがあります。
category1 {
Key1="value1"
Key2="value2"
}
Bashでこの値をどのように読み取ることができますか?
ベストアンサー1
HCLパーサーは、あなたが投稿したデータを読むことができます。 HCLは、構成ファイルで使用されるHashiCorpの構造化文書形式です(例:ここ)。
HCLをJSONなどのより一般的な構造形式に変換するために使用できるツールがあります。そのようなツールの一つはyj
(https://github.com/sclevine/yj)。
$ cat file
category1 {
Key1="value1"
Key2="value2"
}
$ yj -cj <file
{"category1":[{"Key1":"value1","Key2":"value2"}]}
この-cj
オプションはyj
HCLからJSONに変換します(yj -h
利用可能なオプションの完全なリストについては参考資料を参照)。
これにより、セクションが配列にyj
変換されます。category1
入力HCLファイルに追加category1
セクションがある場合、追加セクションは配列の別の要素になります。
JSON形式に変換されたら、通常のJSONプロセッサを使用してjq
必要なデータを抽出できます。
$ yj -cj <file | jq -r '.category1[0].Key1'
value1
この式は、jq
配列の最初の要素のキーに対応する値を選択します。このオプションを使用すると、JSONでエンコードされた引用符付き文字列ではなく、「生データ」が返されます。Key1
category1
sr
jq
これはコマンド置換によって変数として抽出できます。
$ val1=$(yj -cj <file | jq -r '.category1[0].Key1')
$ printf '1st value = %s\n' "$val1"
1st value = value1