まとめ
1: オブジェクトの配列を得る
jq ".keyname[]"
2: 表示したいkey-valueを選ぶ
| {custom_keyname1:.original_keyname1, custom_keyname2:.original_keyname2, ...}
表示したいoriginal keyを、custom keynameに変えて表示する
基本形
cat sbom_by_trivy.json | jq ".packages[] | {name:.name}"
こうなる
  {
    "name": "golang.org/x/sync"
  }
  {
    "name": "github.com/golang/snappy"
  }
  ...
flattenを使えばさらに
ただしflattenだけだと{}[]になるだけ
flatten[]までしないとただの一覧を取れない
cat sbom_by_trivy.json | jq ".packages[] | {name:.name} | flatten[]"
こうなる
  "name": "golang.org/x/sync"
  "name": "github.com/golang/snappy"
  ...
さらに重複除去
かなりややこしいが、
1: uniqueは配列にしか使えないので、全体を[]で囲うことで配列化
2: uniqueをかます
ちなみにソートも勝手にかかる
cat sbom_by_trivy.json | jq "[.packages[] | {name:.name} | flatten[]] | unique"
こうなる
  [
    "github.com/golang/snappy",
    ...
    "golang.org/x/sync",
    ...
  ]
サンプル
aws iam list-users の結果から name と date だけ取り出す
aaa
   $ aws iam list-users | jq ".Users[] | {name:.UserName, created_at:.CreateDate}"
   {
     "name": "user1",
     "created_at": "2022-06-27T11:22:33Z"
   }
az role assignment list --all の結果から name と role だけ取り出す
元ネタ
   $ az role assignment list --all 
   [
     {
       "condition": null,
       "description": null,
       ……
     },
     ……
   ]
こうやって取り出す
   $ az role assignment list --all | jq ".[] | {name:.principalName, role: .roleDefinitionName}"
---
Links From <- tilscb
Links To ->