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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用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}]
答案

要从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

以上是关于使用bash从json格式提取输出值的主要内容,如果未能解决你的问题,请参考以下文章

Android:我想以 json 格式从 google map api 中提取地址

如何从 Pentaho xaction 输出 JSON?

Linux Bash - 修改从标准输出中提取的文本

从 JSON 响应中提取浮点密钥对值时出现 TypeError

golang的xorm如何将[]map[string][]byte 格式的数据序列化成json输出

未从提取的 API 数据中获取正确的 JSON 格式 [关闭]