jqコマンド

(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})'

 

 

(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})"