jq命令处理特殊字符
不支持带有中横线的key-name,比如
"active-status"
json原文:
{
"id": 1,
"jsonrpc": "2.0",
"result": {
"active-status": "active",
"booted-status": null,
"current-epoch-performance": {
"current-epoch-signing-percent": {
"current-epoch-signed": 271040,
"current-epoch-signing-percentage": "0.996866402836420343",
"current-epoch-to-sign": 271892
}
},
"currently-in-committee": true,
"epos-status": "currently elected",
"epos-winning-stake": "50093610622280299999999999.999999999999999992"
}
}
正常情况:
抓取 id
ubuntu@harmony-validator-shard1-1:/data$ cat sign.json | jq .id
1
抓取 jsonrpc
ubuntu@harmony-validator-shard1-1:/data$ cat sign.json | jq .jsonrpc
"2.0"
抓取 result
ubuntu@harmony-validator-shard1-1:/data$ cat sign.json | jq .result
{
"active-status": "active",
"booted-status": null,
"current-epoch-performance": {
"current-epoch-signing-percent": {
"current-epoch-signed": 271040,
"current-epoch-signing-percentage": "0.996866402836420343",
"current-epoch-to-sign": 271892
}
},
"currently-in-committee": true,
"epos-status": "currently elected",
"epos-winning-stake": "50093610622280299999999999.999999999999999992"
}
特殊情况:抓取 active-status
ubuntu@harmony-validator-shard1-1:/data$ cat sign.json | jq .result.active-status
jq: error: status/0 is not defined at <top-level>, line 1:
.result.active-status
jq: 1 compile error
纠正:需要使用中括号处理
ubuntu@harmony-validator-shard1-1:/data$ cat sign.json | jq '.result["active-status"]'
"active"
唯一正确写法:jq '.result["active-status"]'
下列写法全部错误!!!
jq '.result.["active-status"]'
jq '.result[active-status]'
jq .result["active-status"]