使用JQ或任何Linux工具删除或解析JSON文件中的数据

使用JQ或任何Linux工具删除或解析JSON文件中的数据,json,linux,jq,Json,Linux,Jq,我有这个JSON文件: { "vulnerable_configuration_cpe_2_2": [ "cpe:/o:apple:apple_tv:9.1", "cpe:/o:apple:watchos:2.1", "cpe:/o:apple:iphone_os:9.2", "cpe:/o:apple:mac_os_x:10.11.2" ], "vulnerable_configuration": [ { "title": "cp

我有这个JSON文件:

{
  "vulnerable_configuration_cpe_2_2": [
    "cpe:/o:apple:apple_tv:9.1",
    "cpe:/o:apple:watchos:2.1",
    "cpe:/o:apple:iphone_os:9.2",
    "cpe:/o:apple:mac_os_x:10.11.2"
  ],
  "vulnerable_configuration": [
    {
      "title": "cpe:2.3:o:apple:apple_tv:9.1",
      "id": "cpe:2.3:o:apple:apple_tv:9.1"
    },
    {
      "title": "cpe:2.3:o:apple:watchos:2.1",
      "id": "cpe:2.3:o:apple:watchos:2.1"
    },
    {
      "title": "cpe:2.3:o:apple:iphone_os:9.2",
      "id": "cpe:2.3:o:apple:iphone_os:9.2"
    },
    {
      "title": "cpe:2.3:o:apple:mac_os_x:10.11.2",
      "id": "cpe:2.3:o:apple:mac_os_x:10.11.2"
    }
  ],
  "summary": "The Disk Images component in Apple iOS before 9.2.1, OS X before 10.11.3, and tvOS before 9.1.1 allows local users to gain privileges or cause a denial of service (memory corruption) via unspecified vectors.",
  "references": [
    "https://support.apple.com/HT206168",
    "https://support.apple.com/HT205732",
    "https://support.apple.com/HT205731",
    "https://support.apple.com/HT205729",
    "http://lists.apple.com/archives/security-announce/2016/Mar/msg00001.html",
    "http://lists.apple.com/archives/security-announce/2016/Jan/msg00005.html",
    "http://lists.apple.com/archives/security-announce/2016/Jan/msg00003.html",
    "http://lists.apple.com/archives/security-announce/2016/Jan/msg00002.html"
  ],
  "Modified": "2016-03-29T19:01:26.810-04:00",
  "Published": "2016-02-01T06:59:01.090-05:00",
  "access": {
    "vector": "LOCAL",
    "complexity": "LOW",
    "authentication": "NONE"
  },
  "cvss": 7.2,
  "cvss-time": "2016-03-29T09:43:55.537-04:00",
  "cwe": "CWE-119",
  "id": "CVE-2016-1717",
  "impact": {
    "integrity": "COMPLETE",
    "confidentiality": "COMPLETE",
    "availability": "COMPLETE"
  }
我想使用JQ或任何Linux工具删除以下数据

  • 访问(包括向量、复杂性、身份验证)

  • 参考:仅第一个或一个参考

  • cvss时间

  • 易受攻击的\u配置\u cpe\u 2\u 2(包括cpe:/o:apple:apple\u tv:9.1, 等)

结果,我希望是这样:

{
  "vulnerable_configuration": [
    {
      "title": "cpe:2.3:o:apple:apple_tv:9.1",
      "id": "cpe:2.3:o:apple:apple_tv:9.1"
    },
    {
      "title": "cpe:2.3:o:apple:watchos:2.1",
      "id": "cpe:2.3:o:apple:watchos:2.1"
    },
    {
      "title": "cpe:2.3:o:apple:iphone_os:9.2",
      "id": "cpe:2.3:o:apple:iphone_os:9.2"
    },
    {
      "title": "cpe:2.3:o:apple:mac_os_x:10.11.2",
      "id": "cpe:2.3:o:apple:mac_os_x:10.11.2"
    }
  ],
  "summary": "The Disk Images component in Apple iOS before 9.2.1, OS X before 10.11.3, and tvOS before 9.1.1 allows local users to gain privileges or cause a denial of service (memory corruption) via unspecified vectors.",
  "references": [
    "https://support.apple.com/HT206168",
   ],
  "Modified": "2016-03-29T19:01:26.810-04:00",
  "Published": "2016-02-01T06:59:01.090-05:00",
  "cvss": 7.2,
  "cwe": "CWE-119",
  "id": "CVE-2016-1717",
  "impact": {
    "integrity": "COMPLETE",
    "confidentiality": "COMPLETE",
    "availability": "COMPLETE"
  }
我试着

但是没有工作

我必须使用的JQ命令是什么?或者我可以使用什么工具


坦克

以下jq>=1.5的过滤器满足您的要求:

del(.access)
| .references |= [.[0]]
| del(."cvss-time")
| del(.vulnerable_configuration_cpe_2_2)

如果您使用的是jq 1.4,请使用
del([cvss时间])
而不是
del([cvss时间])

感谢@peak提供的快速答案。。。如果要在一行上运行所有内容,正确的命令是什么?我尝试了
jq'(del(.access)'和'del('cvss time')、del('vulnerable_configuration_cpe_2_2_2')和(del(.access)|。references |=[[0]])”
但没有任何工作只要省略“换行符”。也就是说:jq'del(.access)|。references |=[[0]]|……'thanking@peak。但是<代码>cat test.json | jq'del(“cvss时间”)无工作。我有这个错误
del(“.cvss time”)^1编译错误
此错误@peak这很奇怪,因为命令
cat probar.json | jq'del(.access)|。引用|=[[0]]| del(.vulnerable_配置_cpe_2|)>结果。json
工作正常,但我对“cvss time”有问题,这并不奇怪。很明显,您使用的是较旧的jq。请参阅更新。
del(.access)
| .references |= [.[0]]
| del(."cvss-time")
| del(.vulnerable_configuration_cpe_2_2)