This question already has an answer here:
jq not working on tag name with dashes and numbers
(1个答案)
去年关门了。
我有一个(不太复杂)json文件,需要使用
给我带来麻烦的最小样本:
如果我只是运行jq来漂亮地打印它,它就会工作:
但是,如果我尝试提取第一个字段,它将在脚本中失败:
预期的结果是:
有人发现类似的问题吗?当他真正研究字符串时,为什么它会抱怨一个数字文本?
这里的报价似乎无关紧要,同样的错误。
@Inian说的另一个解决方案是:
如果没有[],在本例中这是正确的解决方案,但请同时尝试这两种方法
基本上,解析器是错误的,并将
(1个答案)
去年关门了。
我有一个(不太复杂)json文件,需要使用
bash
提取它的内容。我想使用jq
进行处理,应该很简单。问题是我在处理过程中遇到了一个奇怪的错误,我不知道该如何解决(因为我不知道是什么导致了这个错误)。给我带来麻烦的最小样本:
{
"E23763": {
"data": "information"
}
}
如果我只是运行jq来漂亮地打印它,它就会工作:
$ cat test.json | jq .
{
"E23763": {
"data": "information"
}
}
但是,如果我尝试提取第一个字段,它将在脚本中失败:
$ cat test.json | jq .E23763
jq: error: Invalid numeric literal at EOF at line 1, column 7 (while parsing '.E23763') at <top-level>, line 1:
.E23763
jq: 1 compile error
预期的结果是:
{
"data": "information"
}
有人发现类似的问题吗?当他真正研究字符串时,为什么它会抱怨一个数字文本?
这里的报价似乎无关紧要,同样的错误。
最佳答案
请参阅GitHub上的这个问题这里有很多回复,可能会帮助您解决问题:https://github.com/stedolan/jq/issues/1526
不过,我将在这里发布一个解决方案:
jq '.["E23763"]' test.json
@Inian说的另一个解决方案是:
jq '."E23763"' json
如果没有[],在本例中这是正确的解决方案,但请同时尝试这两种方法
基本上,解析器是错误的,并将
.E
作为数字的开头。关于bash - 无法提取json字段的内容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51325368/
10-16 11:02