JSON形式で出力されるAWS CLIの実行結果をシェルスクリプトで処理する必要あり。シェルから使えるJSON処理ツールを探したところjqが見つかった。jqは軽量かつ柔軟なJSONデータ処理ツールである。
インストール
Amazon Linux
$ sudo yum install jq $ jq --version jq-1.5
Ubuntu
$ sudo apt install jq $ jq --version jq-1.6
使い方
以下のようなJSONがあると仮定する。
$ vi test.json { "ManagedKeysIPV4": { "IPAddressVersion": "IPV4", "Addresses": [ "192.168.1.1/32", "192.168.1.2/32" ] }, "ManagedKeysIPV6": { "IPAddressVersion": "IPV6", "Addresses": [] } }
Addresses配列の内容を取得する。
$ jq ".ManagedKeysIPV4.Addresses[]" test.json "192.168.1.1/32" "192.168.1.2/32"<br>
スクリプトから呼び出す場合。
$ vi list.sh json=$(echo test.json) echo ${json} jq -c '.ManagedKeysIPV4.Addresses[]' | while read -r addr; do echo $addr done
参考サイト
GitHub – jqlang/jq: Command-line JSON processor
https://github.com/jqlang/jq
Linux – JSON データ読み込み! – mk-mode BLOG
https://www.mk-mode.com/blog/2018/09/26/linux-json-reading/
2018-09-26
JSON配列をシェルスクリプトで一覧に変換 – Qiita
https://qiita.com/r18j21/items/73a37f10877750defed7
2021-07-12