如何使用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"
}
}
请帮帮我。
您的示例输出无效 JSON。我假设您想要一个对象,每个输入行有一个字段。
使用 -R
读取原始文本,然后使用 /
拆分 space,并通过设置相应的字段将所有输入减少到一个对象。
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
输出
{
"2254003131908096": {
"exchange": "39480500160",
"replication": "39763833120"
},
"2296334329577472": {
"exchange": "36713833920",
"replication": "37747166400"
},
"2297708719112192": {
"exchange": "39830499360",
"replication": "41430500640"
}
}
演示
我有大量这样的:
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"
}
}
请帮帮我。
您的示例输出无效 JSON。我假设您想要一个对象,每个输入行有一个字段。
使用 -R
读取原始文本,然后使用 /
拆分 space,并通过设置相应的字段将所有输入减少到一个对象。
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
输出
{
"2254003131908096": {
"exchange": "39480500160",
"replication": "39763833120"
},
"2296334329577472": {
"exchange": "36713833920",
"replication": "37747166400"
},
"2297708719112192": {
"exchange": "39830499360",
"replication": "41430500640"
}
}
演示