首页 > 解决方案 > 删除 JSON 文件中重复的 1:M 表示

问题描述

我有大约 700 个 JSON 文件,具有重复的漏洞,例如:

{
  "vulnerabilities": [
}
{
  "vulnerabilities": [
}

此 json 表示显示正在发生的漏洞。我想在每个文件第一次出现漏洞 {} 后删除所有内容。所以我希望每个 json 然后用这个表示保存:

{
  "vulnerabilities": [
}

我有一个循环:

for file in *.json; do
# logic
done

当前循环遍历所有 json 文件并对它们执行逻辑。

如何在第一次出现后删除每个 json 文件中的所有内容vulnerabilities { }

标签: jsonbash

解决方案


如果您有有效的 JSON,例如:

[
  {
    "vulnerabilities": [ {"issue":"root access"}, {"timestamp":"2021-04-19T20:27:23+00:00"} ]
  },
  {
    "vulnerabilities": [ {"issue":"something else"}, {"timestamp":"2021-04-18:27:23+00:00"}]
  }
]

你的系统上有jq那么它很简单:

jq '.[0]' vulnerabilities.json

要得到:

{
  "vulnerabilities": [
    {
      "issue": "root access"
    },
    {
      "timestamp": "2021-04-19T20:27:23+00:00"
    }
  ]
}

推荐阅读