首页 > 解决方案 > 使用bash从json格式中提取输出值

问题描述

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

标签: jsonbashawksed

解决方案


要从 json 中提取,如果可以的话,你应该使用 jq。根据作者的说法,“jq 就像 JSON 数据的 sed” (来源)

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

$ 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

对于其他操作系统,您应该查看此站点


推荐阅读