{"version":"1.0","author":"user1"} {"version":"1.0","author":"user2","timestamp":"2019-02-05"} {"version":"1.0","author":"user3","price":"10.0"}
3 Réponses :
Pourquoi ne pas simplement filtrer vos données avec JQ lui-même?
jq -c '.[] | .metadata' data1.json
Je ne connais pas le contenu des métadonnées, cela peut être n'importe quoi .. donc je ne peux donc pas définir les champs comme vous l'avez mentionné.
Vous pouvez le faire en utilisant JTC :
si le contenu ci-dessus est dans le Fichier foo.json code>, vous pouvez faire: p>
-tc code> signifie "format de sortie compact" p>
-w .. code> est le chemin de marche p>
l code> Match étiquette,
: code> signifie 'tout' p> p>
Il est préférable d'utiliser l'option -r code> pour assurer une sortie de ligne unique pour les promenades. Ainsi, la réponse complète serait la suivante:
pendant que ifs = lecture -r obj; faire des métadonnées + = ("$ obj"); fait << (JTC -W '
Tous les objets de métadonnées, une par ligne, non enveloppés dans un tableau? Mais vous faites déjà que pour votre Pour obtenir les lignes imprimées par JQ dans un tableau lorsqu'il y a des espaces dans le contenu de l'objet: P> < Pré> xxx pré> ou p> métadata code> dans votre Code shell. Si vous souhaitez imprimer ce tableau un par ligne: p>
Merci beaucoup! Cela marche!! Mais je vois un petit problème, s'il y a de l'espace dans l'une des valeurs, l'objet n'est pas stocké comme prévu. Par exemple, si "auteur": "fname lname" a des espaces dans tous les objets de métadonnées, il se décompose après FNAME.
@prathyusha a ajouté quelques façons de renseigner la matrice qui évite ce problème.