jq
コマンド1でソートをする際に、要素の「キー名」でソートしたい。
↓ これを
ソート前
{
"Charlie": "tres",
"Bravo": "dos",
"Delta": "quatro",
"Alfa": [
"uno",
"one"
]
}
↓ このようにソートしたい(一階層目の並び順に注目)。
ソート後
{
"Alfa": [
"uno",
"one"
],
"Bravo": "dos",
"Charlie": "tres",
"Delta": "quatro"
}
「jq コマンド キー ソート」でググってもドンピシャの記事がなかったので自分のググラビリティとして。
- 関連記事: JSON 要素をキー名の「長さ」でソートする @ Qiita
TL; DR (今北産業)
-
-S
ショート・オプションを使う -
--sort-keys
ロング・オプションを使う -
cat sample.json | jq -S .
もしくはcat sample.json | jq --sort-keys .
TS; DR (キーでソートされた順序で各オブジェクトのフィールドを jq
で出力する)
「jq コマンド キー ソート」でググるも、タイトルから内容のわかる記事が、なかなかヒットしなかったのですが公式のマニュアルに記載がありました。
--sort-keys
/-S
:Output the fields of each object with the keys in sorted order.
(【筆者訳】キーでソートされた順序で各オブジェクトのフィールドを出力します。)
(Invoking jq | jq Manual @ GitHub)
$ cat sample.json | jq -S .
{
"Alfa": [
"uno",
"one"
],
"Bravo": "dos",
"Charlie": "tres",
"Delta": "quatro"
}
- オンラインで動作をみる @ paiza.IO
-
jq は JSON データ(要素やオブジェクト)を操作するためのコマンド・ツールです。Stephen Dolan 氏によって C 言語で書かれた軽量プログラムです。 ↩