JSON形式で出力されるAWS CLIの実行結果をシェルスクリプトで処理する必要あり。シェルから使えるJSON処理ツールを探したところjqが見つかった。jqは軽量かつ柔軟なJSONデータ処理ツールである。
インストール
Amazon Linux
1 2 3 |
$ sudo yum install jq $ jq --version jq-1.5 |
Ubuntu
1 2 3 |
$ sudo apt install jq $ jq --version jq-1.6 |
使い方
以下のようなJSONがあると仮定する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$ vi test.json { "ManagedKeysIPV4": { "IPAddressVersion": "IPV4", "Addresses": [ "192.168.1.1/32", "192.168.1.2/32" ] }, "ManagedKeysIPV6": { "IPAddressVersion": "IPV6", "Addresses": [] } } |
Addresses配列の内容を取得する。
1 2 3 |
$ jq ".ManagedKeysIPV4.Addresses[]" test.json "192.168.1.1/32" "192.168.1.2/32"<br> |
スクリプトから呼び出す場合。
1 2 3 4 5 6 7 |
$ 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