如何从文件中删除特定的 JSON 对象?

如何从文件中删除特定的 JSON 对象?

我的文件中有以下 JSON 数据:

{
  "packages": {
    "cc": {
      "name": "cc",
      "version": "3.1",
      "release": "0.4",
      "arch": "x86"
    },
    "code": {
      "name": "code",
      "version": "3.0",
      "release": "2.0.2",
      "arch": "x86"
    }
  }
}

我想code从文件中删除整个对象。我如何使用命令行工具来做到这一点?

答案1

要删除.packages.code键及其值,请使用jq

jq 'del(.packages.code)' file.json

要删除.packages.name键值为 的任何条目code

jq 'del(.packages[] | select(.name == "code"))' file.json

两个命令相同,但它们code从 shell 变量中获取字符串:

string=code

jq --arg key "$string" 'del(.packages[$key])' file.json

jq --arg key "$string" 'del(.packages[] | select(.name == $key))' file.json

将输出重定向到新文件,如果看起来正常,则用该文件替换旧文件。

相关内容