在JQ linux中解析JSON文件,根据特定元素中包含的值选择一些元素
问题描述:
我是一个新的jq用户,我有一些难以找到我的问题的好方法。在JQ linux中解析JSON文件,根据特定元素中包含的值选择一些元素
我有这个示例JSON文件:
{
"one":"one_value",
"two": [
{ // sub structure 0
"aa" : [
"aa_value_0"
],
"ab" : { ... },
"ac" : [
"ac_value_0"
]
},
{ // sub structure 1
"aa": [
"aa_value_1"
],
"ab": {
"aba": [
"aba_value_1"
],
"abb": [
"tototatatiti"
],
"abc": [
"abc_value_1"
]
},
"ac": [
"ac_value_1"
]
},
{ // sub structure 2
"aa" : ...
...
},
...
{ // sub structure x
"aa" : ...
...
}
]
}
我有一个数组命名为“二”谁包含多个子结构(子结构0,子结构1,子结构2,...,子结构X)。我想选择'ac'和'aa'值,其中ab.abb键(在相同的子结构中)包含特定的单词。 所有子结构都具有相同的结构。因为在子结构“1”中,ab.abb字段包含单词“tata”(其中,“tata” tototatatiti)
我该怎么做? 谢谢:)
答
的要求是不是在几个方面完全清楚,但下面的查询说明相匹配,并产生它应该假设的例子中输入已被修改成为有效的JSON两个值:
.two[]
| select(.ab.abb | type == "array")
| select(.ab.abb[] | test("tata"))
| [ .ac[],.aa[] ]
(你不会需要第二线以上,如果.two
是作为常规的说明。另外,如果你的JQ没有test/1
,那么你可以升级或使用index/1
代替。)
在给定的输入,整改后,invoca与-c选项jq的产生:
["ac_value_1","aa_value_1"]
谢谢你,它的完美:) – user2137454