小编txi*_*man的帖子

如何使用 jq 搜索和替换数组中的多个值?

在以下 json 文件中,

{
    "contacts": [
        {
            "name": "John",
            "phone": "1234"
        },
        {
            "name": "Jane",
            "phone": "5678"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

我需要根据姓名更新两个电话号码,并将整个 json 存储在一个新文件中。

我尝试过类似的东西:

jq '.contacts[] | select(.name == "John") | .phone = "4321"' < contacts.json >updated_contacts.json
Run Code Online (Sandbox Code Playgroud)

但随后我不知道如何返回父节点并更改 Jane 的节点,也不知道如何检索整个 json。

我尝试使用 存储到变量中的根节点as,但它保持不变。

作为临时解决方法,我只是这样做:

jq '.contacts[0].number = "4321" | .contacts[1].number = "4321"' < contacts.json >updated_contacts.json
Run Code Online (Sandbox Code Playgroud)

但我不应该依赖数组索引,而应该依赖名称,因为原始 json 可能会改变。

知道如何使用 jq 命令来做到这一点吗?

jq

4
推荐指数
1
解决办法
1万
查看次数

标签 统计

jq ×1