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

如何用单条sed正则替换JSON中l1和x2字段的值?

单条sed命令隐藏JSON中指定字段的值

需要处理的目标JSON:

{
    "info":
    {
        "l1": 77,
        "x2": 77,
    },
    "user": "2323",
    "id": "xxxx",
    "time": 1679955931845,
    "msgType": "oyui"
}

问题说明

你之前使用的正则依赖零宽断言((?<=...)和(?=...)),但sed默认不支持这类语法,因此需要调整为sed兼容的写法,通过捕获组实现单条命令完成替换。

解决方案

使用启用扩展正则的sed命令,一次性匹配并替换l1和x2字段的值:

sed -E 's/("(l1|x2)":)[[:space:]]*[^,]+/\1 *** /g' input.json

命令解释

  • -E:启用扩展正则,减少符号转义的复杂度
  • s/.../.../g:全局替换模式,处理所有匹配的字段
  • ("(l1|x2)":):捕获组,精准匹配"l1":或"x2":字段名部分
  • [[:space:]]*:匹配字段名与值之间的任意空白字符(空格、制表符等)
  • [^,]+:匹配字段值,直到遇到逗号(适配JSON字段的格式)
  • \1 *** :将匹配内容替换为捕获的字段名部分,加上自定义的隐藏标记(这里用***,可根据需求修改)

替换后效果

{
    "info":
    {
        "l1": *** ,
        "x2": *** ,
    },
    "user": "2323",
    "id": "xxxx",
    "time": 1679955931845,
    "msgType": "oyui"
}

如果需要统一用字符串格式的隐藏值,可调整命令为:

sed -E 's/("(l1|x2)":)[[:space:]]*("[^"]*"|[0-9]+)/\1 "***"/g' input.json

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 06:09:55