【问题标题】:Extracting output value from json format using bash使用bash从json格式中提取输出值
【发布时间】:2018-11-21 08:36:09
【问题描述】:

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

【问题讨论】:

  • 从我的脑海中我可以想到<curl command> | grep -o "Session.:.[a-e0-9-]*." | cut -d '"' -f3。如果您需要具体答案,请添加更多信息(例如考虑其他格式、性能、干净的代码等)
  • 你的头一定是最锋利的地方。成功了!

标签: json bash awk sed


【解决方案1】:

如果可以的话,你应该使用 jq 从 json 中提取。根据作者的说法,“jq 就像 sed 用于 JSON 数据”(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

【讨论】:

    猜你喜欢
    • 2021-04-26
    • 2017-07-12
    • 1970-01-01
    • 1970-01-01
    • 2019-07-29
    • 1970-01-01
    • 2016-12-10
    • 2022-11-19
    • 2018-02-02
    相关资源
    最近更新 更多