trouver la clé de chaîne correspondante et incrémenter sa valeur dans le fichier json en utilisant bash

Un fichier json a une ligne dans le format suivant. "solution-id": 1

Et cette ligne est répétée 1000 fois dans le fichier. Maintenant, je dois modifier la ligne de telle sorte que le fichier ressemble à ceci

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

Comment puis-je y parvenir en utilisant bash ou python?

Au lieu de manipuler JSON avec Bash ou Python, vous pouvez utiliser jq . Par exemple, si vous avez JSON comme ceci:

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

Et vous voulez vous transformer en ceci:

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

Tu peux écrire:

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

Ce qui se passe ici, c’est que la fonction to_ensortinges prend une entrée de tableau et génère des paires clé-valeur, où key est une séquence de nombres 0, 1, 2, …, n et value est l’élément d’origine du tableau. La première map du pipeline consiste à modifier la valeur avec le numéro de séquence, la deuxième map à extraire la valeur. Pour mieux comprendre, lancez simplement jq to_ensortinges' file.json , les mappages auront plus de sens.