这里是一个由curl <url> | jq '.'
返回JSON对象(许多,美化的)
{
"63": {
"state": {
"on": false,
"alert": "select",
"mode": "automation",
"reachable": true
},
"swupdate": {
"state": "notupdatable",
"lastinstall": "2019-09-15T11:19:15"
},
"type": "plug",
"name": "Tree",
"modelid": "XXX",
"manufacturername": "XXX",
"productname": "plug",
"capabilities": {
"certified": false,
"control": {},
"streaming": {
"renderer": false,
"proxy": false
}
},
"config": {
"archetype": "plug",
"function": "functional",
"direction": "omnidirectional"
},
"uniqueid": "00:0d:6f:ff:fe:da:c9:dc-01",
"swversion": "2.0.022"
}
}
我想管道输出到jq
,这样我可以从返回的每个对象,如密钥和名称"63" "Tree"(我不担心,如果结果是在括号或如何领域是分开的还是"name":包括)
我可以得到键:
curl <url> | jq -r 'keys[]'
和名称:
curl <url> \ jq -r '.[]{"name"}
但我不能让他们都在同一行。
分析解答
一个简洁,高效的,有些人会说优雅的,解决方法:
map_values(.name)
其中许多替代品:
with_entries( {key, value: .value.name} )
如果你想在同一行的一切,你可以使用-c命令行选项。