【问题标题】:Get value from array in json blob从json blob中的数组获取值
【发布时间】:2021-05-14 14:15:03
【问题描述】:

我试图在冒号后的第二行 msg_values 中获取一个值:

{
    "txt": {
        "new": false,
        "msg": "Generating 'value'\nGenerated new value: +somestring12345=\n",
        "msg_values": [
            "Generating 'value'",
            "Generated new value: +somestring12345=",
            ""
        ]
    }
}

jq -r '.[].msg_values[]' test.json 返回:

Generating 'value'
Generated new value: +somestring12345=

我想要的只是一个: +somestring12345=

我尝试过 select 和 map 但没有成功。

【问题讨论】:

    标签: arrays json jq


    【解决方案1】:

    您可以使用index,例如大致如下:

    .txt|.msg_values[1]| index(":") as $ix | .[1+$ix:]
    

    或更多的防守:

    .txt|.msg_values[1]| (index(":") // empty) as $ix | .[1+$ix:]
    

    由于不清楚您究竟想如何修剪该值,我将把这个细节留给您。

    【讨论】:

    • 这似乎有效,但我需要修剪前导 [空格]。谢谢!
    【解决方案2】:

    这里是否使用sed 选项?

    jq -r '.[].msg_values[1]' test.json | sed -r "s/(.*):(.*)/\2/"
    

    【讨论】:

    • 不,抱歉之前没有提到。我已经使用 grep 和 cut 进行了此操作。
    猜你喜欢
    • 2013-12-24
    • 1970-01-01
    • 2022-08-18
    • 2018-03-24
    • 1970-01-01
    • 1970-01-01
    • 2021-11-20
    • 2013-08-02
    • 2015-08-24
    相关资源
    最近更新 更多