簡體   English   中英

使用JQ的多個過濾器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM