我有一个对象列表,并且希望在使用密钥时将所有出现的 替换.为:Namejq
输入:
{
"Parameters": [
{
"Name": "TEST.AB.SOMETHING",
"Value": "hvfuycsgvfiwbiwbibibewfiwbcfwifcbwibcibc"
},
{
"Name": "TEST_GF_USER",
"Value": "ssssecret"
}
]
}
Run Code Online (Sandbox Code Playgroud)
预期输出:
{
"Parameters": [
{
"Name": "TEST:AB:SOMETHING",
"Value": "hvfuycsgvfiwbiwbibibewfiwbcfwifcbwibcibc"
},
{
"Name": "TEST_GF_USER",
"Value": "ssssecret"
}
]
}
Run Code Online (Sandbox Code Playgroud)
您可以分割.并加入:
jq '(.Parameters[].Name)|=(split(".")|join(":"))' file.json
Run Code Online (Sandbox Code Playgroud)
分配是使用更新运算符完成的。
诀窍是使用.Name |= gsub("\\.";":"). 就您而言(平面列表),这很简单。如果要修改任意 JSON 文本中所有对象的键,最简单的方法是使用walk/1:
walk( if type == "object" and (.Name|type) == "string" then .Name |= gsub("\\.";":")) else . end )
Run Code Online (Sandbox Code Playgroud)
(如果你的 jq 没有 walk/1,那么它的 jq 定义可以很容易地通过谷歌搜索找到。)
| 归档时间: |
|
| 查看次数: |
5809 次 |
| 最近记录: |