1. ホーム
  2. シェル

[解決済み】LinuxのシェルスクリプトからYAMLファイルをパースする方法は?

2022-03-31 15:13:09

質問

私は、技術者でないユーザーができるだけ簡単に編集できる構造化された設定ファイルを提供したいので、YAMLを使用したいと思いました(残念ながら、それはファイルでなければなりません)。しかし、Unixシェルスクリプトからこれをパースする方法が見つからない。

どのように解決しますか?

私のユースケースは、この元記事の質問と全く同じかどうかは分かりませんが、間違いなく類似しています。

YAMLをbashの変数として取り込む必要があります。YAMLは1レベル以上の深さになることはありません。

YAMLはこのような感じです。

KEY:                value
ANOTHER_KEY:        another_value
OH_MY_SO_MANY_KEYS: yet_another_value
LAST_KEY:           last_value

ライクアディスを出力する。

KEY="value"
ANOTHER_KEY="another_value"
OH_MY_SO_MANY_KEYS="yet_another_value"
LAST_KEY="last_value"

この行で出力を実現しました。

sed -e 's/:[^:\/\/]/="/g;s/$/"/g;s/ *=/=/g' file.yaml > file.sh

  • s/:[^:\/\/]/="/g 見つける : で置き換えて =" を無視し :// (URLの場合)
  • s/$/"/g を追加します。 " を各行の末尾に追加します。
  • s/ *=/=/g の前にあるすべてのスペースを削除します。 =