gpt4 book ai didi

arrays - JSON:使用 jq 编辑嵌套数组中的特定值

转载 作者:行者123 更新时间:2023-12-04 00:06:54 25 4
gpt4 key购买 nike

我正在尝试使用实用程序 jq 更新数组中的数组中的值。我在下面粘贴了示例 json。

更具体地说:在工作表数组中,然后在公式数组中,我想将值为“MONTH”的每个 columnName 更改为“YEAR”。我想在 sheet 数组中执行相同的操作,在 columnStyles 数组中,将“MONTH”的每个发生率也更改为“YEAR”

这个 jq 过滤器让我得到 columnNames 的列表。

.sheets[1] | .formulas[] | .columnName

如何仅通过更新我想要的值来编辑整个文件?我是否将 map 与 if 一起使用?

如果我想编辑值的一部分怎么办?例如,在 forumlaString 属性中,只更改字符串中包含 MONTH 的部分,而其余部分保持不变?

{
"version": "6.1.1",
"className": "xyz",
"sheets": [
{
"name": "Pass1",
"sheetId": "95e6c2cd-abbe-46c1-8012-bdf37438b9b7",
"keep": true,
"formulas": [
{
"columnName": "SAMPLE_PROVIDER",
"columnId": "0",
"columnIndex": 0,
"formulaString": "\u003dGROUPBY(#Raw!SAMPLE_PROVIDER)"
},
{
"columnName": "MONTH",
"columnId": "1",
"columnIndex": 1,
"formulaString": "\u003dGROUPBY(#Raw!MONTH)"
}
],
"columnStyles": [
{
"columnId": "0",
"name": "SAMPLE_PROVIDER",
"width": 206,
"thousandSeparator": true
},
{
"columnId": "1",
"name": "MONTH",
"width": 100,
"thousandSeparator": true
}
],
"nextColumnId": 2
},
{
"name": "Transform1",
"sheetId": "49071c1c-fa84-4ae3-92c1-b63175a6b26c",
"keep": true,
"formulas": [
{
"columnName": "SAMPLE_PROVIDER",
"columnId": "0",
"columnIndex": 0,
"formulaString": "\u003d#Pass1!SAMPLE_PROVIDER"
},
{
"columnName": "MONTH",
"columnId": "1",
"columnIndex": 1,
"formulaString": "\u003d#Pass1!MONTH"
}
],
"columnStyles": [
{
"columnId": "0",
"name": "SAMPLE_PROVIDER",
"width": 179,
"thousandSeparator": true
},
{
"columnId": "1",
"name": "MONTH",
"width": 100,
"thousandSeparator": true
}
],
"nextColumnId": 3
}
],
"advancedSchedulingInUse": true,
"errorHandlingMode": "IGNORE"
}

最佳答案

要更改所需容器中的 columnName 字段,您可以使用

jq '(.sheets[] | .formulas[]? | .columnName | select(.=="MONTH")) |= "YEAR"' tmp.json

(?避免了没有关键formula的错误。)

若要将公式字符串中的 MONTH 替换为 YEAR,请将每个 formulaString 值替换为 sub 返回的可能修改后的字符串.

jq '(.sheets[] | .formulas[]? | .formulaString) |= sub("MONTH"; "YEAR")' tmp.json

(sub 需要 jq 1.5,使用 Oniguruma 库编译。)

要将这些组合成一个 jq 过滤器?我不肯定;我对其中任何一个单独起作用的原因只有一点点理解。

关于arrays - JSON:使用 jq 编辑嵌套数组中的特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38981671/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com