web-dev-qa-db-fra.com

Commande de ne conserver qu'une partie des données JSON de chaque ligne?

J'ai un fichier test.json avec différentes longueurs de lignes. Un exemple fictif:

{ "a" : 123, "b": "sd", "c": 45, "d": 1, "e": "" }
{ "a": 5, "b": "bfgg", "c": "x4c", "d": 31, "e": "" }

Je veux juste garder juste b pour chaque ligne:

{ "b": "sd"}
{ "b": "bfgg"}
9
Anush

Avec un bon outil jq :

jq -c '{"b": .b}' test.json

Le résultat:

{"b":"sd"}
{"b":"bfgg"}
12
RomanPerekhrest

Avec Miller

$ mlr --json cut -f b test.json
{ "b": "sd" }
{ "b": "bfgg" }
7
steeldriver

Utilisation de l'analyseur json json:

json -f test.json -gac 'return console.log("{ \"b\": \"" + this.b + "\" }")'

Dans ce cas, jq semble être un meilleur outil pour cela, mais je pense toujours que json est un très bon outil pour analyser les données json.

3
jesse_b

Vous pouvez essayer ceci avec cut et sed:

cut -d',' -f2 file | sed -e 's/^/{/' -e 's/$/ }/'

Production:

{ "b": "sd" }
{ "b": "bfgg" }
2
guillermo chamorro