我有一个(不太复杂的)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"
}
有人发现了类似的问题吗?为什么当他真正在研究字符串时,为什么抱怨数字文字?
报价似乎无关紧要,同样的错误。
答案 0 :(得分:2)
请在GitHub上参考此问题,此处发布了许多回复,可能会帮助您解决问题:https://github.com/stedolan/jq/issues/1526
但是,我将在此处发布一种解决方案:
jq '.["E23763"]' test.json
@Inian所说的另一种解决方案是:
jq '."E23763"' json
在没有[]的情况下,这是正确的解决方案,但是请尝试两者
基本上,解析器有错误,将.E
视为数字的开头。