IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

[jq] Retrouver les valeurs sans indiquer les identifiants


Sujet :

Shell et commandes GNU

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2005
    Messages : 291
    Points : 126
    Points
    126
    Par défaut [jq] Retrouver les valeurs sans indiquer les identifiants
    Bonjour,
    Cela fait déjà quelques heures que je recherche, une simple commande pour parser un json en bash.
    J'ai choisi d'installer ce package pour obtenir le parser.
    J'ai un fichier JSON qui ressemble a ceci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    {
      "5769": {
        "num": 1,
        "name": "test part 1 ",
        "type": "live",
        "type_name": "live online"
     },
      "12864": {
        "num": 2,
        "name": "test part 2",
        "type": "live",
        "type_name": "Live Streams"
      }
    }
    J'utilise la commande "jq" pour tenter de monter la liste des "name" comme ci-dessous.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    test part 1 
    test part 2

    Lorsque je fais la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    [freeArch$ jq -r '. ' test.json 
    {
      "5769": {
        "num": 1,
        "name": "test part 1 ",
        "type": "live",
        "type_name": "live online"
      },
      "12864": {
        "num": 2,
        "name": "test part 2",
        "type": "live",
        "type_name": "Live Streams"
      }
    }
    Tout va bien, j'arrive a parser mon fichier.
    puis je tente
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    [freeArch]$ jq -r '.name' test.json 
    null
    Ca ne fonctionne pas, c'est normal.
    alors j'ai remarqué que si je rajoute id
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    [freeArch]$ jq -r '. | ."12864".name' test.json 
    test part 2
    Ca fonctionne, comment je peux faire pour ignorer ces identifiants(12864 et 5769 ) pour faire ma liste.

    Déjà tenté cette command "jq -r '. | . | ."12864".name' test.json " . mais cela ne focntionne pas.
    Comment je dois faire pour creer ma liste comme ci-dessous avec "jq"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    test part 1 
    test part 2

  2. #2
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    Bonjour

    Citation Envoyé par zoltix Voir le message
    Lorsque je fais la commande "$ jq -r '. ' test.json " (...) Tout va bien, j'arrive a parser mon fichier.
    Normal

    Citation Envoyé par zoltix Voir le message
    puis je tente $ jq -r '.name' test.json (...) Ca ne fonctionne pas, c'est normal.
    Ben oui, tu sautes un niveau.

    Citation Envoyé par zoltix Voir le message
    alors j'ai remarqué que si je rajoute id $ jq -r '. | ."12864".name' test.json, Ca fonctionne
    Ben oui. Tu as rajouté le niveau disparu.
    Note : le ET logique ne sert à rien. Tu fais un filtre qui garde tout ET un filtre avec ton motif. Donc il reste ton motif, évidemment. En plus simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ jq -r '."12864".name' test.json
    test part 2
    Citation Envoyé par zoltix Voir le message
    , comment je peux faire pour ignorer ces identifiants(12864 et 5769 ) pour faire ma liste.
    Intuitivement, on sent bien qu'il faut considérer le tableau.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ jq -r '.[].name' test.json                                                                                                                                                                                                                                    
    test part 1
    test part 2
    ET PAR DESSUS TOUT, LIRE LE MANUEL :
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  3. #3
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 549
    Points : 19 378
    Points
    19 378
    Par défaut
    Citation Envoyé par Flodelarab
    ET PAR DESSUS TOUT, LIRE LE MANUEL :
    ça va aller, Flo. Il a pas fait exprès, je suis sûr. ça va aller. doux. doux.

    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  4. #4
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    Je suis totalement calme.

    Sinon, j'aurais mis le smiley "massacre", "fessee" ou "rouleau" à pâtisserie. Ou les 3.

    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  5. #5
    Membre éprouvé Avatar de balkany
    Homme Profil pro
    Touriste
    Inscrit en
    Juillet 2017
    Messages
    346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Touriste

    Informations forums :
    Inscription : Juillet 2017
    Messages : 346
    Points : 977
    Points
    977
    Par défaut
    Incidemment,
    Citation Envoyé par zoltix Voir le message
    J'ai choisi d'installer ce package pour obtenir le parser.
    On ne fait pas ça : cf https://wiki.archlinux.fr/Enhancing_...es_avec_pacman
    Arch étant une distribution de type rolling release, il peut être dangereux de rafraîchir la base de donnée de pacman sans procéder à une mise à jour complète après. Ne jamais utiliser pacman -Sy paquet pour installer un paquet, mais utilisez toujours pacman -S paquet à la place. De plus, mettez à jour votre système régulièrement avec pacman -Syu.

  6. #6
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 549
    Points : 19 378
    Points
    19 378
    Par défaut
    eh, oh ! toi aussi, tu te calmes.

    --

    ce confinement me rend dingue.
    il faut que je modère, moi !!!

    je vais finir par m'auto-modérer...

    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  7. #7
    Membre éprouvé Avatar de balkany
    Homme Profil pro
    Touriste
    Inscrit en
    Juillet 2017
    Messages
    346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Touriste

    Informations forums :
    Inscription : Juillet 2017
    Messages : 346
    Points : 977
    Points
    977
    Par défaut
    Alors j'attends avec impatience le prochain message du genre : « si je fais for f in `ls *`; do …; done, c'est bien ? »

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2005
    Messages : 291
    Points : 126
    Points
    126
    Par défaut
    Merci pour la réponse malgré vos vannes de barbu.

    Remarque : sous archlinux, je le mets toujours à jour mon système avant d'installer un package.

    Pour ma défense, j'ai suivi les instructions du site sans trop me poser question sur ce sujet.

    https://www.google.com/amp/s/www.how...e-with-jq/amp/

    remarque cela fait que 6 mois que j'ai décidé de passer sous Linux.

    Soyez tolérant avec les novices.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 16
    Dernier message: 11/12/2013, 11h20
  2. comment inserer une ligne sans indiquer les colomne
    Par tomy_libre dans le forum Langage SQL
    Réponses: 5
    Dernier message: 16/06/2009, 16h18
  3. Réponses: 1
    Dernier message: 22/12/2008, 17h15
  4. Réponses: 1
    Dernier message: 06/08/2008, 12h04
  5. Retrouver les valeurs des paramètres des fonctions d'une DLL
    Par Bernard Martineau dans le forum Langage
    Réponses: 6
    Dernier message: 08/11/2005, 10h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo