编辑项目并使用 jq 打印全部内容

Edit an item and print the whole content with jq

假设我有一个 JSON 这样的:

{
    "user" :
    {
        "name": "Manu",
        "songs": 30
    },
    "admin" :
    {
        "name": "Chao",
        "songs": 50
    }
}

我想将 user -> songs 替换为 40 并打印整个文件,这样我得到:

{
    "user" :
    {
        "name": "Manu",
        "songs": 40        <------ this is the line to change
    },
    "admin" :
    {
        "name": "Chao",
        "songs": 50
    }
}

如何使用 jq(使用 jq version 1.3)执行此操作?我尝试了以下方法,它成功地替换了值,但是没有打印出全部内容:

$ jq "[.user | { "name": .name, "songs": 40 }]" myfile
[
  {
    "songs": 40,
    "name": "Manu"
  }
]

使用赋值运算符:

jq '.user.songs = 40' myfile