jqコマンドでJSONデータから特定のキーをもつ配列オブジェクトから値を取り出す

AWS_CLIでEC2インスタンスをリストアップする作業で、インスタンスのNameタグをCSVのカラムとして吐き出して欲しいという要望がありました。

その時の抽出用のスクリプトを整理した備忘録的な内容です。

jqコマンドとは

JSONデータを読み込んで特定のキーの要素を取り出したりすることができるコマンドです。

インストールはこちら→(https://stedolan.github.io/jq/download/)

サンプルデータを用いた例

データとして以下を用意しました。

sample.json

取り出したいデータはProducts->List配下にあるId,CodeTagsのKeyが”Name”になっているオブジェクトのValueとします

出力するコマンド

解説

[.Id, .Code, (.Tags[] | select(.Key == "Name").Value) ]の部分にある

(.Tags[] | select(.Key == "Name").Value)という記述でList配下にあるTagsの要素の中でKeyが”Name”のデータを選択してそのValueを取り出すようになっています。

最後に@csvとつなげればCSVに変換されます。

最後のsedでは"\を消しています。ff

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です