JQを使用して簡単な区切り出力を取得する

JQを使用して簡単な区切り出力を取得する

この状況を変える方法:

{
  "write": {
    "out": 0,
    "available": 128,
    "totalTickets": 128
  },
  "read": {
    "out": 7,
    "available": 249,
    "totalTickets": 256
  }
}

入力する

0 128 128 7 249 256

jqを使用しますか?

答え1

次のようにJSONツリーを再帰的に下げることもできます。

>jq 'recurse|numbers' data.json
0
128
128
7
249
256

(これはあなたのすべての価値が次のとおりであると仮定します。数字、使用スカラーブールと文字列も必要な場合)

または省略形の表記法を使用してください。再帰今すぐ..

..|numbers

(@cuonglm ありがとうございます!)

ご注意ください地図|方法この方法は、ランダムにネストされたオブジェクトツリーにも適用されます。

例えば

{
  "write": {
    "out": 0,
    "available": 128,
    "totalTickets": 128
  },
  "read": {
    "out": 7,
    "available": 249,
    "totalTickets": 256,
    "details" : {
        "good": 10,
        "bad" : 20
    }
  }
}

生産します:

0
128
128
7
249
256
10
20

答え2

$ jq 'map(map(values))|flatten|.[]' data.json
0
128
128
7
249
256

最初の部分が作成されます。

[
  [
    0,
    128,
    128
  ],
  [
    7,
    249,
    256
  ]
]

これは次のように平坦化されます。

[
  0,
  128,
  128,
  7,
  249,
  256
]

この値を抽出.[]します。

関連情報