まとめ
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 To ->