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.