J'ai un json dans lequel je veux modifier une valeur particulière mais le terminal affiche toujours le json avec la valeur modifiée mais il ne change pas réellement la valeur dans le fichier particulier. Échantillon json:
{
name: 'abcd',
age: 30,
address: 'abc'
}
Je souhaite modifier la valeur de l'adresse dans le fichier lui-même, mais je n'ai pas pu le faire jusqu'à présent. J'ai essayé d'utiliser:
jq '.address = "abcde"' test.json
mais ça n'a pas marché. Aucune suggestion?
AFAIK jq
ne supporte pas l'édition sur place, vous devez donc tout d'abord rediriger vers un fichier temporaire, puis remplacer votre fichier d'origine par celui-ci, ou utiliser l'utilitaire sponge
du paquetage moreutils, comme celui-ci:
jq '.address = "abcde"' test.json|sponge test.json
Il existe d'autres techniques pour "rediriger vers le même fichier", comme enregistrer votre sortie dans une variable e.t.c. "Unix & Linux StackExchange" est un bon point de départ si vous voulez en savoir plus à ce sujet.
Utilisez un fichier temporaire. c'est ce que tout programme qui prétend effectuer une édition sur place fait.
tmp=$(mktemp)
jq '.address = "abcde"' test.json > "$tmp" && mv "$tmp" test.json