Regex 在Bash中提取JSON值
在Bash中,我将响应数据保存到一个变量中 结果如下所示:Regex 在Bash中提取JSON值,regex,bash,macos,Regex,Bash,Macos,在Bash中,我将响应数据保存到一个变量中 结果如下所示: {"token_type":"Bearer","access_token":"022-8baa5324-f57b-445d-c5ec-821c63a5fd35","expires_in":3600,"scope":"any-website.com"} 现在我想将访问令牌的值提取到另一个var中 在Linux中,我以这种方式解决了这个问题,它可以工作: echo "$response_json" | grep -oP '(?<="
{"token_type":"Bearer","access_token":"022-8baa5324-f57b-445d-c5ec-821c63a5fd35","expires_in":3600,"scope":"any-website.com"}
现在我想将访问令牌的值提取到另一个var中
在Linux中,我以这种方式解决了这个问题,它可以工作:
echo "$response_json" | grep -oP '(?<="access_token":")[^"]*'
我的问题是MacOS不再支持grep参数p
(Perl表达式)。参数E
不适用于该表达式
如果您能在不需要安装其他Bash工具的情况下提供解决方案帮助,我将不胜感激。每个人都说他们不想安装新工具,但实际上,像
grep
这样的面向行的工具根本不适合处理JSON这样的结构化文本。如果要使用JSON,请使用专门设计的工具来处理它
这是一种选择:
$ echo "$response_json" | jq -r '.access_token'
022-8baa5324-f57b-445d-c5ec-821c63a5fd35
$ echo "$response_json" | jq -r '.access_token'
022-8baa5324-f57b-445d-c5ec-821c63a5fd35