[jq] Snippets

リストに使うコマンド

itemsという配列がある想定で進める。

slice

indexにbegin:endのような設定

jq '.items | .[3:5]'

map

idとnameだけを表示

jq '.items | map({id, name})'

.items[] | {id. name}という表現だと外側の配列が除外されてしまう。
一覧で表示する場合はその方がいいかも。

jq '.items[] | {id, name}'

filter

idがmzbのアイテムだけを表示

jq '.items[] | select(.id == "mzb")'

sort

idでソートする

jq '.items | sort_by(.id)'

降順はreverseで表現

jq '.items | sort_by(.id) | reverse'

uniq

unique_byを使う。uniqではないので注意

jq '.items | uniq_by(.season)'

group_by

ObjectではなくArrayになる。

jq '.items | group_by(.season)'

CSV/TSVに変換

jq -r '.items[] | [.id, .name] | @csv'
jq -r '.items[] | [.id, .name] | @tsv'