【问题标题】:Extract JSON value in Bash [duplicate]在 Bash 中提取 JSON 值 [重复]
【发布时间】:2016-12-25 15:57:28
【问题描述】:

在 Bash 中,我将响应数据保存到变量中。

结果如下:

{"token_type":"Bearer","access_token":"022-8baa5324-f57b-445d-c5ec-821c63a5fd35","expires_in":3600,"scope":"any-website.com"}

现在我想将访问令牌的值提取到另一个变量中。

在 Linux 中,我以这种方式解决了这个问题,它可以工作:

echo "$response_json" | grep -oP '(?<="access_token":")[^"]*'

结果我得到:

022-8baa5324-f57b-445d-c5ec-821c63a5fd35

我的问题是 MacOS 不再支持 grep 参数 P(Perl 表达式)。参数E 不适用于该表达式。

如果您无需安装额外的 Bash 工具,我将不胜感激。

【问题讨论】:

    标签: regex bash macos


    【解决方案1】:

    每个人都说他们不想安装新工具,但实际上,像 grep 这样的面向行的工具根本就不是为了处理像 JSON 这样的结构化文本而设计的。如果您打算使用 JSON,请获取专门用于处理它的工具。

    jq 就是这样一种选择:

    $ echo "$response_json" | jq -r '.access_token'
    022-8baa5324-f57b-445d-c5ec-821c63a5fd35
    

    【讨论】:

      猜你喜欢
      • 2018-11-19
      • 2016-08-30
      • 2013-06-24
      • 1970-01-01
      • 1970-01-01
      • 2015-05-12
      • 2021-04-26
      • 2016-12-10
      • 1970-01-01
      相关资源
      最近更新 更多