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

如何用jq筛选IP段修改JSON节点state并输出完整JSON

解决jq修改JSON中指定IP节点state字段的问题

问题分析

你原命令的错误点有三个:

  • 正则表达式逻辑错误:^10.13* 中的.是正则通配符(匹配任意单个字符),不是IP里的字面量点;*会匹配3字符0次或多次,不符合匹配10.13开头IP段的需求。
  • 命令语法不完整:末尾缺少闭合的单引号,导致Shell无法正确解析jq脚本,触发语法错误。
  • 正则未转义字面量点:必须用\.表示IP地址中的.,才能准确匹配目标段。

正确命令

以下两种方式均可实现需求,执行后将输出重定向到新文件即可:

方式1:基于select的直接赋值

jq '(.[] | select(.node | test("^10\.13"))).state |= "disabled"' data.json > updated_data.json

方式2:基于map的遍历修改(可读性更强)

jq 'map(if .node | test("^10\.13") then .state = "disabled" else . end)' data.json > updated_data.json

效果验证

运行上述命令后,你的示例data.json会被修改为:

[
    {
        "node": "10.13.248.254:61052",
        "state": "disabled"
    },
    {
        "node": "10.13.248.255:61052",
        "state": "disabled"
    },
    {
        "node": "10.54.247.228:61052",
        "state": "active"
    },
    {
        "node": "10.54.247.229:61052",
        "state": "active"
    }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 00:45:22