(22)
https://www.karakaram.com/notes-on-jq-command/
https://www.karakaram.com/aggregating-with-jq-command/
https://qiita.com/yoza/items/c4c732779a5a10fd3b4c
sudo apt install jq
JSON=$(cat << EOS
[
{
"id" : "001",
"name" : "job001",
"project_id" : "901",
"project_name" : "project901",
"count": 11,
"created": "2023-04-30T06:00:11Z",
"val" : [ "val01", "val02" ],
"Section01" : {
"name" : "00101",
"val" : "val03"
},
"Section02" : {
"name" : "00102",
"val" : [ "val04", "val05" ]
},
"Section03" : {
"name" : "00103",
"val" : {
"key1" : "val06",
"key2" : "val07"
}
}
},
{
"id" : "002",
"name" : "job002",
"project_id" : "901",
"project_name" : "project901",
"count": 12,
"created": "2023-04-30T06:00:12Z",
"val" : [ "val11", "val12" ],
"Section01" : {
"name" : "00201",
"val" : "val13"
},
"Section02" : {
"name" : "00202",
"val" : [ "val14", "val15" ]
},
"Section03" : {
"name" : "00203",
"val" : {
"key1" : "val16",
"key2" : "val17"
}
}
},
{
"id" : "003",
"name" : "job003",
"project_id" : "923",
"project_name" : "project923",
"count": 13,
"created": "2023-04-30T06:00:13Z",
"val" : [ "val21", "val22" ],
"Section01" : {
"name" : "00301",
"val" : "val23"
},
"Section02" : {
"name" : "00302",
"val" : [ "val24", "val25" ]
},
"Section03" : {
"name" : "00303",
"val" : {
"key1" : "val26",
"key2" : "val27"
}
}
}
]
EOS
)
echo $JSON
JSON をフォーマット
echo $JSON | jq '.'
配列の中身をすべて取り出す
echo $JSON | jq '.[]'
特定の配列の要素を取り出す
echo $JSON | jq '.[0]'
キーを指定して値を取り出す
echo $JSON | jq '.[].id'
echo $JSON | jq '.[].val'
echo $JSON | jq '.[].val[1]'
echo $JSON | jq '.[].Section01'
echo $JSON | jq '.[].Section01["name"]'
echo $JSON | jq '.[].Section02'
echo $JSON | jq '.[].Section02["val"]'
echo $JSON | jq '.[].Section02["val"][0]'
echo $JSON | jq '.[].Section03'
echo $JSON | jq '.[].Section03["val"]'
echo $JSON | jq '.[].Section03["val"]["key2"]'
複数の値を取り出す
echo $JSON | jq '.[] | .id, .name'
echo $JSON | jq '.[] | [.id, .name]'
ダブルクォーテーションを消す
echo $JSON | jq -r '.[] | .id, .name'
CSV 形式で出力する
echo $JSON | jq -r '.[] | [.id, .name] | @csv'
絞り込み検索をする
echo $JSON | jq -r '.[] | select(.name == "job002") | [.id, .name] | @csv'
echo $JSON | jq -r '.[] | select(.name == "job002" and .project_name == "project901") | [.id, .name, .project_id, .project_name] | @csv'
echo $JSON | jq -r '.[] | select(.name == "job002" or .project_name == "project923") | [.id, .name, .project_id, .project_name] | @csv'
正規表現で検索
echo $JSON | jq -r '.[] | select(.project_name | test("923$") ) | [.id, .name, .project_id, .project_name] | @csv'
ソート
echo $JSON | jq '. | sort_by(.count) |.[0]'
echo $JSON | jq '. | sort_by(.count) | reverse |.[0]'
最大値、最小値
echo $JSON | jq '. | max_by(.count)'
echo $JSON | jq '. | min_by(.count)'
合計値
echo $JSON | jq '[.[].count]|add'
配列数
echo $JSON | jq '.|length'
グループ化
echo $JSON | jq 'group_by(.project_id)'
グループごとの最大値、最小値
echo $JSON | jq 'group_by(.project_id) | map(max_by(.count) )'
echo $JSON | jq 'group_by(.project_id) | map(min_by(.count) )'
グループごとの合計値
echo $JSON | jq 'group_by(.project_id) | map({"project_id": .[0].project_id, "count": [.[].count]|add})'
グループごとの配列数
echo $JSON | jq 'group_by(.project_id) | map({"project_id": .[0].project_id, "length": [.[]]|length})'
(11)
https://www.karakaram.com/notes-on-jq-command/
https://www.karakaram.com/aggregating-with-jq-command/
https://qiita.com/yoza/items/c4c732779a5a10fd3b4c
sudo apt install jq
JSON=$(cat << EOS
[
{
"id" : "001",
"name" : "job001",
"project_id" : "901",
"project_name" : "project901",
"count": 11,
"created": "2023-04-30T06:00:11Z",
"val" : [ "val01", "val02" ],
"Section01" : {
"name" : "00101",
"val" : "val03"
},
"Section02" : {
"name" : "00102",
"val" : [ "val04", "val05" ]
},
"Section03" : {
"name" : "00103",
"val" : {
"key1" : "val06",
"key2" : "val07"
}
}
},
{
"id" : "002",
"name" : "job002",
"project_id" : "901",
"project_name" : "project901",
"count": 12,
"created": "2023-04-30T06:00:12Z",
"val" : [ "val11", "val12" ],
"Section01" : {
"name" : "00201",
"val" : "val13"
},
"Section02" : {
"name" : "00202",
"val" : [ "val14", "val15" ]
},
"Section03" : {
"name" : "00203",
"val" : {
"key1" : "val16",
"key2" : "val17"
}
}
},
{
"id" : "003",
"name" : "job003",
"project_id" : "923",
"project_name" : "project923",
"count": 13,
"created": "2023-04-30T06:00:13Z",
"val" : [ "val21", "val22" ],
"Section01" : {
"name" : "00301",
"val" : "val23"
},
"Section02" : {
"name" : "00302",
"val" : [ "val24", "val25" ]
},
"Section03" : {
"name" : "00303",
"val" : {
"key1" : "val26",
"key2" : "val27"
}
}
}
]
EOS
)
echo $JSON
JSON をフォーマット
echo $JSON | jq '.'
配列の中身をすべて取り出す
echo $JSON | jq '.[]'
特定の配列の要素を取り出す
echo $JSON | jq '.[0]'
キーを指定して値を取り出す
echo $JSON | jq '.[].id'
echo $JSON | jq '.[].val'
echo $JSON | jq '.[].val[1]'
echo $JSON | jq '.[].Section01'
echo $JSON | jq '.[].Section01["name"]'
echo $JSON | jq '.[].Section02'
echo $JSON | jq '.[].Section02["val"]'
echo $JSON | jq '.[].Section02["val"][0]'
echo $JSON | jq '.[].Section03'
echo $JSON | jq '.[].Section03["val"]'
echo $JSON | jq '.[].Section03["val"]["key2"]'
複数の値を取り出す
echo $JSON | jq '.[] | .id, .name'
echo $JSON | jq '.[] | [.id, .name]'
ダブルクォーテーションを消す
echo $JSON | jq -r '.[] | .id, .name'
CSV 形式で出力する
echo $JSON | jq -r '.[] | [.id, .name] | @csv'
絞り込み検索をする
echo $JSON | jq -r '.[] | select(.name == "job002") | [.id, .name] | @csv'
echo $JSON | jq -r '.[] | select(.name == "job002" and .project_name == "project901") | [.id, .name, .project_id, .project_name] | @csv'
echo $JSON | jq -r '.[] | select(.name == "job002" or .project_name == "project923") | [.id, .name, .project_id, .project_name] | @csv'
正規表現で検索
echo $JSON | jq -r '.[] | select(.project_name | test("923$") ) | [.id, .name, .project_id, .project_name] | @csv'
ソート
echo $JSON | jq '. | sort_by(.count) |.[0]'
echo $JSON | jq '. | sort_by(.count) | reverse |.[0]'
最大値、最小値
echo $JSON | jq '. | max_by(.count)'
echo $JSON | jq '. | min_by(.count)'
合計値
echo $JSON | jq '[.[].count]|add'
配列数
echo $JSON | jq '.|length'
グループ化
echo $JSON | jq 'group_by(.project_id)'
グループごとの最大値、最小値
echo $JSON | jq 'group_by(.project_id) | map(max_by(.count) )'
echo $JSON | jq 'group_by(.project_id) | map(min_by(.count) )'
グループごとの合計値
echo $JSON | jq 'group_by(.project_id) | map({"project_id": .[0].project_id, "count": [.[].count]|add})'
グループごとの配列数
echo $JSON | jq 'group_by(.project_id) | map({"project_id": .[0].project_id, "length": [.[]]|length})'
(RL9)
https://www.karakaram.com/notes-on-jq-command/
https://www.karakaram.com/aggregating-with-jq-command/
https://qiita.com/yoza/items/c4c732779a5a10fd3b4c
JSON=$(cat << EOS
[
{
"id" : "001",
"name" : "job001",
"project_id" : "901",
"project_name" : "project901",
"count": 11,
"created": "2023-04-30T06:00:11Z",
"val" : [ "val01", "val02" ],
"Section01" : {
"name" : "00101",
"val" : "val03"
},
"Section02" : {
"name" : "00102",
"val" : [ "val04", "val05" ]
},
"Section03" : {
"name" : "00103",
"val" : {
"key1" : "val06",
"key2" : "val07"
}
}
},
{
"id" : "002",
"name" : "job002",
"project_id" : "901",
"project_name" : "project901",
"count": 12,
"created": "2023-04-30T06:00:12Z",
"val" : [ "val11", "val12" ],
"Section01" : {
"name" : "00201",
"val" : "val13"
},
"Section02" : {
"name" : "00202",
"val" : [ "val14", "val15" ]
},
"Section03" : {
"name" : "00203",
"val" : {
"key1" : "val16",
"key2" : "val17"
}
}
},
{
"id" : "003",
"name" : "job003",
"project_id" : "923",
"project_name" : "project923",
"count": 13,
"created": "2023-04-30T06:00:13Z",
"val" : [ "val21", "val22" ],
"Section01" : {
"name" : "00301",
"val" : "val23"
},
"Section02" : {
"name" : "00302",
"val" : [ "val24", "val25" ]
},
"Section03" : {
"name" : "00303",
"val" : {
"key1" : "val26",
"key2" : "val27"
}
}
}
]
EOS
)
echo $JSON
JSON をフォーマット
echo $JSON | jq '.'
配列の中身をすべて取り出す
echo $JSON | jq '.[]'
特定の配列の要素を取り出す
echo $JSON | jq '.[0]'
キーを指定して値を取り出す
echo $JSON | jq '.[].id'
echo $JSON | jq '.[].val'
echo $JSON | jq '.[].val[1]'
echo $JSON | jq '.[].Section01'
echo $JSON | jq '.[].Section01["name"]'
echo $JSON | jq '.[].Section02'
echo $JSON | jq '.[].Section02["val"]'
echo $JSON | jq '.[].Section02["val"][0]'
echo $JSON | jq '.[].Section03'
echo $JSON | jq '.[].Section03["val"]'
echo $JSON | jq '.[].Section03["val"]["key2"]'
複数の値を取り出す
echo $JSON | jq '.[] | .id, .name'
echo $JSON | jq '.[] | [.id, .name]'
ダブルクォーテーションを消す
echo $JSON | jq -r '.[] | .id, .name'
CSV 形式で出力する
echo $JSON | jq -r '.[] | [.id, .name] | @csv'
絞り込み検索をする
echo $JSON | jq -r '.[] | select(.name == "job002") | [.id, .name] | @csv'
echo $JSON | jq -r '.[] | select(.name == "job002" and .project_name == "project901") | [.id, .name, .project_id, .project_name] | @csv'
echo $JSON | jq -r '.[] | select(.name == "job002" or .project_name == "project923") | [.id, .name, .project_id, .project_name] | @csv'
正規表現で検索
echo $JSON | jq -r '.[] | select(.project_name | test("923$") ) | [.id, .name, .project_id, .project_name] | @csv'
ソート
echo $JSON | jq '. | sort_by(.count) |.[0]'
echo $JSON | jq '. | sort_by(.count) | reverse |.[0]'
最大値、最小値
echo $JSON | jq '. | max_by(.count)'
echo $JSON | jq '. | min_by(.count)'
合計値
echo $JSON | jq '[.[].count]|add'
配列数
echo $JSON | jq '.|length'
グループ化
echo $JSON | jq 'group_by(.project_id)'
グループごとの最大値、最小値
echo $JSON | jq 'group_by(.project_id) | map(max_by(.count) )'
echo $JSON | jq 'group_by(.project_id) | map(min_by(.count) )'
グループごとの合計値
echo $JSON | jq 'group_by(.project_id) | map({"project_id": .[0].project_id, "count": [.[].count]|add})'
グループごとの配列数
echo $JSON | jq 'group_by(.project_id) | map({"project_id": .[0].project_id, "length": [.[]]|length})'
- Windows Server
(2022)
https://www.karakaram.com/notes-on-jq-command/
https://www.karakaram.com/aggregating-with-jq-command/
https://qiita.com/yoza/items/c4c732779a5a10fd3b4c
https://note.com/qoala/n/nc95a5193bce7
move jq-win64.exe jq.exe
notepad a.json
[
{
"id" : "001",
"name" : "job001",
"project_id" : "901",
"project_name" : "project901",
"count": 11,
"created": "2023-04-30T06:00:11Z",
"val" : [ "val01", "val02" ],
"Section01" : {
"name" : "00101",
"val" : "val03"
},
"Section02" : {
"name" : "00102",
"val" : [ "val04", "val05" ]
},
"Section03" : {
"name" : "00103",
"val" : {
"key1" : "val06",
"key2" : "val07"
}
}
},
{
"id" : "002",
"name" : "job002",
"project_id" : "901",
"project_name" : "project901",
"count": 12,
"created": "2023-04-30T06:00:12Z",
"val" : [ "val11", "val12" ],
"Section01" : {
"name" : "00201",
"val" : "val13"
},
"Section02" : {
"name" : "00202",
"val" : [ "val14", "val15" ]
},
"Section03" : {
"name" : "00203",
"val" : {
"key1" : "val16",
"key2" : "val17"
}
}
},
{
"id" : "003",
"name" : "job003",
"project_id" : "923",
"project_name" : "project923",
"count": 13,
"created": "2023-04-30T06:00:13Z",
"val" : [ "val21", "val22" ],
"Section01" : {
"name" : "00301",
"val" : "val23"
},
"Section02" : {
"name" : "00302",
"val" : [ "val24", "val25" ]
},
"Section03" : {
"name" : "00303",
"val" : {
"key1" : "val26",
"key2" : "val27"
}
}
}
]
type a.json
JSON をフォーマット
type a.json | jq "."
配列の中身をすべて取り出す
type a.json | jq ".[]"
特定の配列の要素を取り出す
type a.json | jq ".[0]"
キーを指定して値を取り出す
type a.json | jq ".[].id"
type a.json | jq ".[].val"
type a.json | jq ".[].val[1]"
type a.json | jq ".[].Section01"
type a.json | jq ".[].Section01[\"name\"]"
type a.json | jq ".[].Section02"
type a.json | jq ".[].Section02[\"val\"]"
type a.json | jq ".[].Section02[\"val\"][0]"
type a.json | jq ".[].Section03"
type a.json | jq ".[].Section03[\"val\"]"
type a.json | jq ".[].Section03[\"val\"][\"key2\"]"
複数の値を取り出す
type a.json | jq ".[] | .id, .name"
type a.json | jq ".[] | [.id, .name]"
ダブルクォーテーションを消す
type a.json | jq -r ".[] | .id, .name"
CSV 形式で出力する
type a.json | jq -r ".[] | [.id, .name] | @csv"
絞り込み検索をする
type a.json | jq -r ".[] | select(.name == \"job002\") | [.id, .name] | @csv"
type a.json | jq -r ".[] | select(.name == \"job002\" and .project_name == \"project901\") | [.id, .name, .project_id, .project_name] | @csv"
type a.json | jq -r ".[] | select(.name == \"job002\" or .project_name == \"project923\") | [.id, .name, .project_id, .project_name] | @csv"
正規表現で検索
type a.json | jq -r ".[] | select(.project_name | test(\"923$\") ) | [.id, .name, .project_id, .project_name] | @csv"
ソート
type a.json | jq ". | sort_by(.count) |.[0]"
type a.json | jq ". | sort_by(.count) | reverse |.[0]"
最大値、最小値
type a.json | jq ". | max_by(.count)"
type a.json | jq ". | min_by(.count)"
合計値
type a.json | jq "[.[].count]|add"
配列数
type a.json | jq ".|length"
グループ化
type a.json | jq "group_by(.project_id)"
グループごとの最大値、最小値
type a.json | jq "group_by(.project_id) | map(max_by(.count) )"
type a.json | jq "group_by(.project_id) | map(min_by(.count) )"
グループごとの合計値
type a.json | jq "group_by(.project_id) | map({\"project_id\": .[0].project_id, \"count\": [.[].count]|add})"
グループごとの配列数
type a.json | jq "group_by(.project_id) | map({\"project_id\": .[0].project_id, \"length\": [.[]]|length})"