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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 307
    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.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  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"
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  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
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  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
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 307
    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
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

+ 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