人
我需要在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"
}
]
}
谢谢!
答案 0 :(得分:1)
这似乎是walk/1
的情况,但我不确定您是否需要sub
或gsub
的语义。为了便于说明,我们使用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