gpt4 book ai didi

json - 如果键匹配,则从 bash 中的 json 中提取特定键值

转载 作者:太空宇宙 更新时间:2023-11-04 10:03:33 27 4
gpt4 key购买 nike

我有一个json内容(output.json)

{"project": {"id": "A", "content": [{"name": "XYZ", "location": "Berlin", "comments":""}, {"name": "ABC", "location": "NewYork", "comments": "Hwllo"}, {"name": "DEF", "location": "Paris", "comments": "Success"}]}}

我想使用 bash 或 shell 命令从上面的 json 中提取 location 键和 name 匹配说 ABC 的值

我尝试了类似下面的内容,它在花括号内给出了内容。但不确定搜索特定 key 。

cat output.json | grep -o -e "{.*}"

输出预期: 如果 name 匹配 ABC,则输出为 "location":"NewYork"

对进一步处理有什么建议吗?

最佳答案

要从 json 中提取,您应该尽可能使用 jq。根据作者的说法,“jq 就像 JSON 数据的 sed”(source) .

在你的情况下应该是:

$ jq -r '.project' output.json | jq -r '.content' | jq '.[] | select(.name=="ABC")' | jq -r '.location'

输出将是:

NewYork

要获得您需要的输出:

"location":"NewYork"

您可以使用:

echo "\"location\":$(jq -r '.project' output.json | jq -r '.content' | jq '.[] | select(.name=="ABC")' | jq '.location')"

在使用 jq 之前,您应该在 Debian 和 Ubuntu 上安装它:

$ sudo apt install jq

对于其他操作系统,您应该检查 this site .

关于json - 如果键匹配,则从 bash 中的 json 中提取特定键值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54254760/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com