You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jq技术问询:如何在保留原结构的前提下为分区数组元素添加end属性

正确的jq解决方案:为分区表添加end属性

要在保留原JSON完整结构的前提下,给partitiontable.partitions数组中的每个分区对象添加end属性(值为start与size之和),可以使用|=运算符精准更新目标对象:

.partitiontable.partitions[] |= . + {end: .start + .size}

错误原因分析

  1. 直接赋值失败:执行.partitiontable.partitions[].end = .size + .start时,.size和.start的上下文是整个顶层文档,而非当前遍历的分区对象,导致计算结果为null。
  2. 递归运算符破坏结构:用..筛选含start的对象时,会返回所有匹配的对象集合,而非原文档的完整结构,因此丢失了外层的disk、partitiontable等层级。

示例验证

输入JSON:

{
  "disk": "/dev/sda",
  "partitiontable": {
    "partitions": [
      {"start": 2048, "size": 1048576, "type": "primary"},
      {"start": 1050624, "size": 2097152, "type": "extended"}
    ]
  }
}

执行命令后输出:

{
  "disk": "/dev/sda",
  "partitiontable": {
    "partitions": [
      {"start": 2048, "size": 1048576, "type": "primary", "end": 1050624},
      {"start": 1050624, "size": 2097152, "type": "extended", "end": 3147776}
    ]
  }
}

内容的提问来源于stack exchange,提问作者Brian Chrisman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 09:12:14