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 :

Merge multiple JSON en 1 JSON avec un script shell


Sujet :

Shell et commandes GNU

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Décembre 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Décembre 2020
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Merge multiple JSON en 1 JSON avec un script shell
    Bonjour à tous,

    Je souhaite fusionner/merger des fichiers json (quelques 300 fichiers) en un seul pour pouvoir ensuite le gérer avec StudioR

    Chaque fichier suit la même structure (1 ligne unique) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {"start_time":1566725555000,"end_time":1566727091000,"created_at":1566725557000,"updated_at":1566732764000,"start_time_timezone_offset":7200000,"end_time_timezone_offset":7200000,"distance":4140,"duration":1535377,"elevation_gain":10,"elevation_loss":13,"average_speed":9.709,"calories":294,"longitude":2.0698986,"latitude":47.89151,"max_speed":13.897117,"pause_duration":0,"duration_per_km":370864,"temperature":28.0,"pulse_avg":0,"pulse_max":0,"avg_cadence":0,"max_cadence":0,"manual":false,"edited":false,"completed":true,"live_tracking_active":false,"live_tracking_enabled":true,"cheering_enabled":true,"indoor":false,"id":"9f024351-f3a7-4672-9bba-46f4a81731bb","weather_condition_id":"1","subjective_feeling_id":"2","sport_type_id":"1","user_equipment_ids":["5d6260469584a75f61f1dc99"]}
    Je souhaite donc obtenir un fichier unique avec un script shell

    Je connais très mal les commandes linux/shell et j'essaye en vain depuis ce matin à regardant le forum etc.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    Bonjour,

    à quoi doit ressembler le fichier final ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Décembre 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Décembre 2020
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    Bonjour,

    à quoi doit ressembler le fichier final ?
    Aucune idée de la structuration dudit fichier unique, c'est ça mon problème, j'avais pas prévu d'avoir des fichiers json en entrée à l'origine

    Je pensais à cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    {
    "fichier1":[{"start_time":1566725555000,"end_time":1566727091000,"created_at":1566725557000}],
    "fichier2":[{"start_time":1566725555000,"end_time":1566727091000,"created_at":1566725557000}]
    }

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    Aucune idée de la structuration dudit fichier unique
    consulte la doc de StudioR pour savoir ce qu'il attend !
    puis reviens nous dire.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Décembre 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Décembre 2020
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    J'ai justement parcouru la documentation et quelques forums

    J'ai trouvé une commande json

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #!/bin/bash
     
    json={
    for filepath in "/Home/Running/data_running/sessionsjson/*"
    do
    	json="${json}$(cat $filepath),"
    done
    json="${json%?} ] }"
     
    echo $json
    mais je ne comprend pas son fonctionnement "man json" ne me donne rien d'exploitable et je ne suis pas sûr de comprendre la synthaxe des commandes en question

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    J'ai justement parcouru la documentation et quelques forums
    et ? ça valide le format que tu as indiqué ?

    JSON est un format de fichier, ce n'est pas une commande.
    ce script est en bash.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  7. #7
    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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk '/./{l++;t[l]=FILENAME;c[l]=$0;} END{print "{"; for (i=1;i<=l;i++) print "\t\""t[i]"\":["c[i]"]"((i<l)?",":""); print "}";}' * > resultat.json
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  8. #8
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 284
    Points : 12 736
    Points
    12 736
    Par défaut
    Pour le fun en built_in:
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $ ls fx*
    fx1.json  fx2.json  fx3.json
    $ echo {$'\n'"$(for i in fx* ; do [ -z "$fl" ] || printf ",\n" ; printf "$i:[$(<$i)]" ; fl=1 ; done)"$'\n'}
    {
    fx1.json:[{"start_time":1566725555000,"end_time":1566727091000,"created_at":1566725557000,"updated_at":1566732764000,"start_time_timezone_offset":7200000,"end_time_timezone_offset":7200000,"distance":4140,"duration":1535377,"elevation_gain":10,"elevation_loss":13,"average_speed":9.709,"calories":294,"longitude":2.0698986,"latitude":47.89151,"max_speed":13.897117,"pause_duration":0,"duration_per_km":370864,"temperature":28.0,"pulse_avg":0,"pulse_max":0,"avg_cadence":0,"max_cadence":0,"manual":false,"edited":false,"completed":true,"live_tracking_active":false,"live_tracking_enabled":true,"cheering_enabled":true,"indoor":false,"id":"9f024351-f3a7-4672-9bba-46f4a81731bb","weather_condition_id":"1","subjective_feeling_id":"2","sport_type_id":"1","user_equipment_ids":["5d6260469584a75f61f1dc99"]}],
    fx2.json:[{"start_time":1566725555000,"end_time":1566727091000,"created_at":1566725557000,"updated_at":1566732764000,"start_time_timezone_offset":7200000,"end_time_timezone_offset":7200000,"distance":4140,"duration":1535377,"elevation_gain":10,"elevation_loss":13,"average_speed":9.709,"calories":294,"longitude":2.0698986,"latitude":47.89151,"max_speed":13.897117,"pause_duration":0,"duration_per_km":370864,"temperature":28.0,"pulse_avg":0,"pulse_max":0,"avg_cadence":0,"max_cadence":0,"manual":false,"edited":false,"completed":true,"live_tracking_active":false,"live_tracking_enabled":true,"cheering_enabled":true,"indoor":false,"id":"9f024351-f3a7-4672-9bba-46f4a81731bb","weather_condition_id":"1","subjective_feeling_id":"2","sport_type_id":"1","user_equipment_ids":["5d6260469584a75f61f1dc99"]}],
    fx3.json:[{"start_time":1566725555000,"end_time":1566727091000,"created_at":1566725557000,"updated_at":1566732764000,"start_time_timezone_offset":7200000,"end_time_timezone_offset":7200000,"distance":4140,"duration":1535377,"elevation_gain":10,"elevation_loss":13,"average_speed":9.709,"calories":294,"longitude":2.0698986,"latitude":47.89151,"max_speed":13.897117,"pause_duration":0,"duration_per_km":370864,"temperature":28.0,"pulse_avg":0,"pulse_max":0,"avg_cadence":0,"max_cadence":0,"manual":false,"edited":false,"completed":true,"live_tracking_active":false,"live_tracking_enabled":true,"cheering_enabled":true,"indoor":false,"id":"9f024351-f3a7-4672-9bba-46f4a81731bb","weather_condition_id":"1","subjective_feeling_id":"2","sport_type_id":"1","user_equipment_ids":["5d6260469584a75f61f1dc99"]}]
    }
    Cordialement.

Discussions similaires

  1. deserialize json avec multiple objet?
    Par sniper59 dans le forum VB.NET
    Réponses: 1
    Dernier message: 10/03/2017, 14h41
  2. Gérer une base de données avec un script shell!
    Par nixmind dans le forum Administration système
    Réponses: 27
    Dernier message: 31/01/2011, 15h55
  3. Réponses: 4
    Dernier message: 14/08/2010, 16h43
  4. interaction awk avec le script shell qui l'appelle
    Par kass28 dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 10/02/2010, 11h05
  5. Problème avec mon script shell case in esac
    Par Olivier Regnier dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 28/06/2007, 22h54

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