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 :

Explorer toute l'arborescence et pour chaque fichier .json F1 trouvé...


Sujet :

Shell et commandes GNU

  1. #1
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 615
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 615
    Billets dans le blog
    2
    Par défaut Explorer toute l'arborescence et pour chaque fichier .json F1 trouvé...
    Bonjour à tous

    Je vous expose mon petit souci :

    J'ai une arborescence dans lequel j'ai plusieurs fichiers .json contenant des choses comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
            {
    		"Mot": "Mot1",
    		"propriété 1": "toto"
    		"propriété 2": "tutu"
    	},
    	{
    		"Mot": "Mot2",
    		"propriété 1": "tata"
    		"propriété 2": "titi"
    	},
    et un fichier général dans le répertoire racine qui contient tous les mots de tous les fichiers , et qui est sous la forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
           ......
           ......
    	{
    		"Mot": "Mot1",
    		"propriété 1bis": "c'est moi"
    	},
          .....
    J'aimerais pouvoir lancer un script qui explore toute l'arborescence et pour chaque fichier .json F1 trouvé, fasse un fichier F2 correspondant; en mettant uniquement ligne apres ligne les lignes "propriété 1bis" des mots de F1 trouvés dans le fichier dans le répertoire racine.

    J'arrive à faire des scripts sur pas mal de choses, mais là je sèche..

    Si quelqu'un peut me donner un coup de main ce serait apprécié..
    Merci d'avance

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 308
    Par défaut
    Bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $ cat F1.json
    [
            {
                    "Mot": "Mot1",
                    "propriété 1": "toto",
                    "propriété 2": "tutu"
            },
            {
                    "Mot": "Mot2",
                    "propriété 1": "tata",
                    "propriété 2": "titi"
            }
    ]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $ cat fichiergeneral.json
    [
            {
                    "Mot": "Mot1",
                    "propriété 1bis": "c'est moi"
            },
            {
                    "Mot": "Mot2",
                    "propriété 1bis": "c'est lui"
            }
     
    ]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ while read mot; do jq '.[] | select(.Mot=='"$mot"') | .["propriété 1bis"]' fichiergeneral.json; done < <(jq '.[].Mot' F1.json)
    "c'est moi"
    "c'est lui"
    Nota bene: Autour de $mot, il y a une paire de double quotes pour protéger la variable bash et une paire de simple quotes pour sortir du script jq et rentrer.

  3. #3
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 615
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 615
    Billets dans le blog
    2
    Par défaut
    Merci !

    Mais quand j'exécute ça me dit :


    jq: command not found



    PS: je suis en bash

    PPS: en cherchant ça dit "pas de boucles nommées en bash"

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 615
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 615
    Billets dans le blog
    2
    Par défaut
    OK il fallait installer le package "jq"

    Merci

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 615
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 615
    Billets dans le blog
    2
    Par défaut
    DÉSOLÉ

    Résolu !!!



    Ouuuupssss !!

    Petit problème suppllémentaire...

    Je n'arrive pas à faire sortir dans un fichier les résultats.... J'ai essayé tout un tas de choses, j'ai lu la doc de jq (pas claire), et son stderr....

    Merci d´avance

  6. #6
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 308
    Par défaut
    Si tu as les résultats à l'écran, redirige-les dans un fichier.
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    $ commande > monfichier.txt
    Donc, si je reprends mon exemple :
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    while read mot; do jq '.[] | select(.Mot=='"$mot"') | .["propriété 1bis"]' fichiergeneral.json; done < <(jq '.[].Mot' F1.json) >monfichier.txt

  7. #7
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 615
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 615
    Billets dans le blog
    2
    Par défaut
    Merci !!

    Désolé je l'avais résolu mais le réseau était bloqué de mon coté !!! La réponse ne s´était pas enregistrée !!!


    MERCI

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

Discussions similaires

  1. internet explorer - Clic bouton dans IE pour export fichier excel
    Par francoiscrna dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/12/2014, 11h05
  2. [XL-2010] VBA - Excel/ internet explorer - Clic bouton dans IE pour export fichier excel
    Par victoireC dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 10/01/2013, 09h39
  3. [ZF 1.11] require_once ' ' pour chaque fichier dans mon models
    Par absot dans le forum Zend Framework
    Réponses: 3
    Dernier message: 09/02/2012, 13h29
  4. [Batch] executer une commande pour chaque fichier d'un répertoire
    Par Louis-Guillaume Morand dans le forum Windows
    Réponses: 4
    Dernier message: 10/12/2007, 18h47
  5. Réponses: 1
    Dernier message: 17/05/2005, 20h50

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