在我的项目中,我生成了一个json文件,这里是一个示例(只有一个索引):
[
{
"aaa": "lklklk",
"bbb": "uiop",
"kkk": "zeez",
"lll": 3,
"_source": {
"element1": "zzzz",
"element2": "eeee",
"element3": "hhhhh",
"element4": "jjjjjj",
"@timestamp": "2019-07-31T08:32:45.000Z",
"element5": "1",
"element6": "6768",
"element7": "gggg",
"element8": "ppppp"
},
{
"aaa": "lklklk",
"bbb": "uiop",
"kkk": "zeez",
"lll": 3,
"_source": {
"element1": "zzzz",
"element2": "eeee",
"element3": "hhhhh",
"element4": "jjjjjj",
"@timestamp": "2019-07-31T08:32:45.000Z",
"element5": "1",
"element6": "6768",
"element7": "gggg",
"element8": "ppppp"
},
]
我使用以下命令
var1=$(jq '.['$cpt'] | ._source .element1' file.json)
我可以得到我的价值,但是我收到了这个错误:
jq错误不能用数字索引
我已经试过了
var1=$(jq '.[] | ._source .element1' file.json)
但是我接收所有的数据,我需要按索引接收数据。
这是我的bash代码:
while (($verification!=1))
do
elementa[$cpt]=$(jq '.['$cpt'] | ._source .element1' $File.json)
elementb[$cpt]=$(jq '.['$cpt'] | ._source .element2' $File.json)
elementc[$cpt]=$(jq '.['$cpt'] | ._source .element3' $File.json)
elementd[$cpt]=$(jq '.['$cpt'] | ._source .element4' $File.json)
elemente[$cpt]=$(jq '.['$cpt'] | ._source .element5' $File.json)
elementf[$cpt]=$(jq '.['$cpt'] | ._source .element6' $File.json)
elementg[$cpt]=$(jq '.['$cpt'] | ._source .element7' $File.json)
elementh[$cpt]=$(jq '.['$cpt'] | ._source ."@timestamp"' $File.json)
elementi[$cpt]=$(jq '.['$cpt'] | ._source .element8' $File.json)
done
对于每一行,我都会收到相同的错误:/您知道我为什么会有这个错误吗?
提前谢谢你。
发布于 2019-07-31 19:55:49
编辑:这个A已经被更新,以反映对Q的更新。
$cpt
在其他地方显然是bash变量。即使这正是您所希望的,最好以其他方式传递bash变量,例如,如果$cpt是一个整数:
var1=$(jq
当然,这仍然不能解决与示例JSON不匹配的问题。https://stackoverflow.com/questions/57297397
复制相似问题