created: 2021-03-03T08:04:20.000Z
jqのselectでフィルタする
selectはsqlのwhere句みたいに使う。こんな感じでつかう。
# foo配列の中のオブジェクトでbar属性が存在するものだけ表示
.foo[] | select(has('bar'))
- 配列の中身をリストの状態でパイプに渡す
- パイプの先では
.
がリストの1要素になっている- has関数には
.
自体が引数で渡り、キーを検査されている
- has関数には
- select(true)なものだけ出力に出る
例
インスタンスのタグの配列から Key属性が ENVIRONMENT
なオブジェクトになっているものを絞る場合
$ aws ec2 describe-instances --instance-ids i-05b2 > ./_
$ cat ./_ \
| jq '.Reservations[0].Instances[0].Tags[] \
| select(.Key=="ENVIRONMENT")'