找到匹配的字符串键并使用bash在json文件中增加其值

时间:2017-11-23 18:14:26

标签: json linux bash unix scripting

json文件的行格式如下。 的 "solution-id": 1

此行在文件中重复1000次。现在我需要修改该行,使得该文件如下所示

"solution-id": 1
"solution-id": 2
"solution-id": 3
...
....
.....
""solution-id": 1000"

如何使用bash或python实现此目的?

1 个答案:

答案 0 :(得分:1)

您可以使用jq,而不是使用Bash或Python操作JSON。 例如,如果您有这样的JSON:

[
  {
    "solution-id": "foo",
    "junk": "foo"
  },
  {
    "solution-id": "bar",
    "junk": "foo"
  }
]

你想转变成这个:

[
  {
    "solution-id": 0,
    "junk": "foo"
  },
  {
    "solution-id": 1,
    "junk": "foo"
  }
]

你可以写:

jq 'to_entries | map(.value["solution-id"] = .key) | map(.value)' file.json

这里发生了什么,to_entries函数接受数组输入,并生成键值对,其中key是数字0,1,2,...,n的序列,和value是数组中的原始项。管道中的第一个map是使用序列号修改值,第二个map是提取值。为了更好地理解,只运行jq to_entries' file.json,映射将更有意义。