コマンド

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では"\を消しています。

新しいシェルプログラミングの教科書
システム管理やソフトウェア開発など、
実際の業務では欠かせないシェルスクリプトの知識を徹底解説

ほとんどのディストリビューションでデフォルトとなっているbashに特化することで、
類書と差別化を図るとともに、より実践的なプログラミングを紹介します。
またプログラミング手法の理解に欠かせないLinuxの仕組みについてもできるかぎり解説しました。
イマドキのエンジニア必携の一冊。

-コマンド
-

© 2021 Shiro's secret base