LoginSignup
0
0

More than 1 year has passed since last update.

【jq コマンド】JSON 要素を「キー名の長さ」でソートする

Last updated at Posted at 2022-05-07

jq コマンド1でソートをする際に、要素のキー名の「長さ」でソートしたい

ソート前
{
  "": "0x0",
  "2DEkCJF8vWIheS0f": "0x5b7b3440",
  "A3rjGqZK": "0x2cc8df37",
  "CRSQQITHOHfhCFwRXEit9M8j7UhKobqq": "0x81250d75",
  "GNRay1oRg4waBzYiLLrYKkZ6CU6flZwinxiSdBtx7a38g2AET2VnktciCcmlcsDG": "0x856f5418",
  "Hello world!": "0x7b98e751",
  "This is a string": "0x3a779320",
  "hush now don't you cry": "0x4021e5a5"
}

上記 ↑ を以下 ↓ のようにソートしたい。

ソート後
{
  "GNRay1oRg4waBzYiLLrYKkZ6CU6flZwinxiSdBtx7a38g2AET2VnktciCcmlcsDG": "0x856f5418",
  "CRSQQITHOHfhCFwRXEit9M8j7UhKobqq": "0x81250d75",
  "hush now don't you cry": "0x4021e5a5",
  "This is a string": "0x3a779320",
  "2DEkCJF8vWIheS0f": "0x5b7b3440",
  "Hello world!": "0x7b98e751",
  "A3rjGqZK": "0x2cc8df37",
  "": "0x0"
}

jq sort by key "length"」や「jq キーの長さ ソート」でググっても、ドンピシャの記事がなかったので自分のググラビリティとして。

TL; DR (今北産業)

  1. to_entries で、各要素のキーと値を {"key": <キー名>, "value": <値>} に変換する。
  2. sort_by(.key|length) で、キー名の長さにソートする。
  3. from_entries で、{"key": <キー名>, "value": <値>} を元の型(<キー名>:<値>)に戻す。

TS; DR (マスター動くものをくれ)

昇順
cat mydata.json | jq 'to_entries|sort_by(.key|length)|from_entries'
降順
cat mydata.json | jq 'to_entries|sort_by(.key|length)|reverse|from_entries'

参考文献

  1. jq は JSON データ(要素やオブジェクト)を操作するためのコマンド・ツールです。Stephen Dolan 氏によって C 言語で書かれた軽量プログラムです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0