簡體   English   中英

如何使用JQ創建特定結果(jq parse json)

[英]How to create a specific result using JQ (jq parse json)

我有大量這樣的:

2254003131908096 39480500160 39763833120
2296334329577472 36713833920 37747166400
2297708719112192 39830499360 41430500640

我應該使用哪個 JQ 命令來獲得這樣的結果:

"2254003131908096": {
  {
    "exchange": "39480500160",
    "replication": "39763833120"
  }
}
    
"2296334329577472": {
  {
    "exchange": "36713833920",
    "replication": "39763833120"
  }
}
  
"2297708719112192": {  
  {
    "exchange": "39830499360",
    "replication": "41430500640"
  }
}

請幫幫我。

您的示例 output 無效 JSON。我假設您想要一個 object,每個輸入行有一個字段。

使用-R讀取原始文本,然后使用/按空格拆分,並通過設置相應的字段將所有輸入減少到一個 object。

jq -Rn '
  [inputs / " "] | reduce .[] as $line ({};
    .[$line[0]] = {exchange: $line[1], replication: $line[2]}
  )
'
{
  "2254003131908096": {
    "exchange": "39480500160",
    "replication": "39763833120"
  },
  "2296334329577472": {
    "exchange": "36713833920",
    "replication": "37747166400"
  },
  "2297708719112192": {
    "exchange": "39830499360",
    "replication": "41430500640"
  }
}

演示

你可以使用reduce

篩選

reduce (inputs / " " ) as [$k,$e,$r] ({}; .+{($k):{exchange:$e,replication:$r}})

輸入

2254003131908096 39480500160 39763833120
2296334329577472 36713833920 37747166400
2297708719112192 39830499360 41430500640

Output

{
  "2254003131908096": {
    "exchange": "39480500160",
    "replication": "39763833120"
  },
  "2296334329577472": {
    "exchange": "36713833920",
    "replication": "37747166400"
  },
  "2297708719112192": {
    "exchange": "39830499360",
    "replication": "41430500640"
  }
}

演示

https://jqplay.org/s/9uugFhWQtt

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM