使用bash从json格式提取输出值

问题描述 投票:-2回答:1

如何提取如下所示的值3be847cb-48d6-ea4d-05ab-ee8ea2bd7337?我试图使用awk和{'print $'}之类的东西,但这不起作用,因为整个输出是第一项。

命令:

$ curl -s --request GET http://x.y.z.10:8500/v1/kv/my-key-value

输出:

[{"LockIndex":0,"Key":"w-key-value","Flags":0,"Value":"Nw==","Session":"3be847cb-48d6-ea4d-05ab-ee8ea2bd7337","CreateIndex":16,"ModifyIndex":33212}]
json bash awk sed
1个回答
2
投票

要从json中提取,你应该使用jq。根据作者“jq就像sed for JSON data”(source)

在你的情况下,它应该是:

$ curl -s --request GET http://x.y.z.10:8500/v1/kv/my-key-value | jq -r '.Session'

输出将是:

3be847cb-48d6-ea4d-05ab-ee8ea2bd7337

在使用jq之前,你应该在Debian和Ubuntu上安装它,它将是:

$ sudo apt install jq

对于其他操作系统,你应该检查this site

© www.soinside.com 2019 - 2024. All rights reserved.