[英]Multiple filters using JQ
我的老板希望我們的團隊使用JQ來解析JSON文件。 我使用的應用程序生成我需要轉換的JSON。 我有一個看起來像這樣的文件:
{
"Collections": [
{
"OptionGroups": [
{
"OptionGroupName": "Test1",
"Status": "in-sync"
}
],
"Version": "3.4.25",
"InstanceIdentifier": "Dev1"
},
{
"OptionGroups": [
{
"OptionGroupName": "Test2",
"Status": "in-sync"
}
],
"Version": "3.4.22",
"InstanceIdentifier": "Dev2"
}
]
}
使用JQ,當我執行這個時:
cat json.txt | jq -r '.Collections[].OptionGroups[].OptionGroupName, .Collections[].InstanceIdentifier, .Collections[].Version'
我得到這個輸出:
Test1
Test2
Dev1
Dev2
3.4.25
3.4.22
如何獲得如下所示的輸出:
Test1 Dev1 3.4.25
Test2 Dev2 3.4.22
使用在單個表達式中使用多個[]
過濾器時,請務必小心。 如果你不小心,你可能會得到意想不到的結果。
我會將其視為轉換為CSV(但使用不同的分隔符,選項卡)。
首先將數據轉換為您的行。
.Collections[] | { InstanceIdentifier, Version } + (.OptionGroups[] | { OptionGroupName })
使用這些新對象,您可以構建行值的數組並寫出行。 不要將數組傳遞給@csv
過濾器,只需將它們與選項卡連接即可。
[ .OptionGroupName, .InstanceIdentifier, .Version ] | join("\t")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.