我见过这个问题。我想这与特殊的char有关。我已经阅读了jq手册并引用了该字段,但仍然失败,我尝试使用/不使用括号
abc@uswest1aprod 13:49:59 ~
$ cat test | jq .
{
"bus_v320161103-12-00-44": {
"aliases": {
"bus_v3": {}
},
"mappings": {
"business": {
"dynamic": "strict",
"_all": {
"enabled": false
}
}
}
}
abc@uswest1aprod 13:52:33 ~
$ cat test | jq ."bus_v320161103-12-00-44"
jq: error: null and number cannot be subtracted
abc@uswest1aprod 13:53:09 ~
$ cat test | jq .["bus_v320161103-12-00-44"]
error: bus_v320161103 is not defined
.[bus_v320161103-12-00-44] 1 compile error
答案 0 :(得分:1)
You need to quote your filter so it isn't interpreted by the shell...
$ jq '."bus_v320161103-12-00-44"' test
Without it, it's effectively being passed in like this:
.bus_v320161103-12-00-44
Which is accessing a field called bus_v320161103
and subtracting that by 12
, then 00
then 44
.