【问题标题】:JQ - Replace string in full jsonJQ - 替换完整 json 中的字符串
【发布时间】:2018-01-14 22:54:33
【问题描述】:

伙计们。

我需要在 JQ 中的 JSON 的整个正文中用不同的字符串替换所有出现的字符串。

假设在下面的输入 JSON 中,我想将字符串“DEV”替换为“INT”。我怎么能在 JQ 中做到这一点?

输入 JSON:

{  
   "startIndex":0,
   "vXPolicies":[  
      {  
         "policyName":"DEVXPolicyDEF",
         "tables":"DEVX_DE_DEF"             
      },
      {  
         "policyName":"DEVXPolicyABC",
         "tables":"DEVX_DE_ABC"
      }
   ]
}

所需的输出 JSON:

{  
   "startIndex":0,
   "vXPolicies":[  
      {  
         "policyName":"INTXPolicyDEF",
         "tables":"INTX_DE_DEF"
      },
      {  
         "policyName":"INTXPolicyABC",
         "tables":"INTX_DE_ABC"
      }
   ]
}

谢谢!

【问题讨论】:

    标签: json regex replace jq


    【解决方案1】:

    这似乎是walk/1 的情况,但我不确定您是否想要subgsub 的语义。为了便于说明,我们使用gsub

    walk(if type == "string" then gsub("DEV"; "INT") else . end)
    

    当然,如果您还想检查键名,则必须相应地调整上述内容。

    如果您的 jq 没有 walk/1,则考虑升级到 master 或包含其定义,可从 https://github.com/stedolan/jq/blob/master/src/builtin.jq 获得

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-08-14
      • 2020-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-18
      • 2021-10-17
      相关资源
      最近更新 更多