[英]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"
}
}
演示
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.