JQ - 在完整的json中替换字符串

时间:2018-01-14 22:54:33

标签: json regex replace jq

我需要在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"
      }
   ]
}

谢谢!

1 个答案:

答案 0 :(得分: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

获取