シェルでJSON出力を解析するにはどうすればよいですか?
たとえば、Amazon Webサービスには、インスタンスのステータスを取得するためのCLIが用意されています。
$ aws ec2 describe-instances <my_instance_id>
しかし、コマンドはJSON文字列を返します。このコマンドの出力は次のようになります。
$ aws ec2 describe-instances x12345
{
"Reservations" :
{
"OwnerId": "1345345"
"Groups": [],
"SecurityGroups": [
{
"Foo" : "yes"
"Bar" : "no
}
]
}
}
JSON出力の解析に使用できるシェルの組み込みはありますか?
たとえばFOO
、次のシェル変数にキャプチャしたいとしますoutput["Reservations"]["SecurityGroups"][0]{"Foo"}
。
それが役立つ場合、私は特にZshで動作するソリューションに興味があります。
--output text
ような外部ツールを使用せずにシェルで解析したい場合に使用しますjshon
。
jshon
初めて聞いたばかりなので、私はあなたのリンクをたどりました。それを読んで、私が偶然にjq
最初に聞いてインストールしたことを非常に嬉しく思いました。まだお聞きになっていない方もいらっしゃると思います。すべてのコマンドラインスイッチを気にする必要がなく、独自の正規表現を実行できます。必要に応じて、関数や変数を宣言することもできます。興味があればこちらで答えをご覧ください。