jqのselectでフィルタする

Mar 3, 2021 17:04 · 219 words · 1 minute read

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")'
tweet Share