使用JQ,我尝试读取/提取花括号第二级中的值(.phone,.termination,.duration,而忽略花括号第一级中的值(12345、67891)和78912,已经在第二级括号内重复了。可以这样做吗?
{
"12345":[{
"phone": "12345",
"termination": "picked-up",
"duration": 5
}],
"67891":[{
"phone": "67891",
"termination": "picked-up",
"duration": 10
}],
"78912":[{
"phone": "78912",
"termination": "busy",
"duration": 0
}]
}
我已经尝试通过定义我感兴趣的关键字过滤器来过滤值,但是我显然缺少其他的第一步。也应考虑方括号。 Ty
cat test.json | jq [.phone, .termination, .duration] | less
我想要一行包含描述的三个过滤器的逗号分隔值。
12345, picked-up, 5,
67891, picked-up, 10,
78912, busy, 0
答案 0 :(得分:2)
如果最里面的键始终处于相同的顺序,则可以使用过滤器:
.[] | [.[][]] | @csv
否则:
.[][]
| [.phone, .termination, .duration]
| @csv
在任何一种情况下,您可能都希望使用-r命令行选项来产生:
"12345","picked-up",5
"67891","picked-up",10
"78912","busy",0
如果要取消引号,可以再次使用-r选项来使用以下内容:
.[] | [.[][]] | join(", ")
或:
.[][] | "\(.phone), \(.termination), \(.duration)"
使用-r命令行选项,最后两个结果:
12345, picked-up, 5
67891, picked-up, 10
78912, busy, 0