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

时间:2018-06-12 03:27:24

标签: json bash awk sed

如何提取如下所示的值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}]

1 个答案:

答案 0 :(得分: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