created: 2021-03-03T08:04:20.000Z

jqのselectでフィルタする

selectはsqlのwhere句みたいに使う。こんな感じでつかう。

# foo配列の中のオブジェクトでbar属性が存在するものだけ表示
.foo[] | select(has('bar'))
  • 配列の中身をリストの状態でパイプに渡す
  • パイプの先では . がリストの1要素になっている
    • has関数には . 自体が引数で渡り、キーを検査されている
  • select(true)なものだけ出力に出る

インスタンスのタグの配列から Key属性が ENVIRONMENT なオブジェクトになっているものを絞る場合

$ aws ec2 describe-instances --instance-ids i-05b2 > ./_
$ cat ./_ \
    | jq '.Reservations[0].Instances[0].Tags[] \
    | select(.Key=="ENVIRONMENT")'