[英]JSON file parsing in linux with JQ, select some elements depending on value contained in a specific element
我是新的jq用戶,我很難找到解決問題的好方法。
我有這個樣本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" : ...
...
}
]
}
我有一個名為“ two”的數組,其中包含幾個子結構(子結構0,子結構1,子結構2,...,子結構x)。 我想選擇“ ac”和“ aa”值,其中ab.abb鍵(在同一子結構中)包含特定單詞。 所有子結構都具有相同的結構。
在我的示例中,如果我搜索單詞“ tata”,則必須獲取值“ aa_value_1”和“ ac_value_1”,因為在子結構“ 1”中,ab.abb字段包含單詞“ tata”(tototatatiti)
我怎樣才能做到這一點 ? 謝謝 :)
需求在幾個方面都不完全清楚,但是下面的查詢與描述相匹配,並且假設示例輸入已被修改為有效的JSON,並產生了它應具有的兩個值:
.two[]
| select( .ab.abb | type == "array")
| select( .ab.abb[] | test("tata") )
| [ .ac[],.aa[] ]
(如果.two
如所述那樣常規,則不需要上面的第二行。此外,如果jq沒有test/1
,則可以升級或使用index/1
)
使用給定的輸入,在更正后,使用-c選項調用jq會產生:
["ac_value_1","aa_value_1"]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.