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 :

Insérer des données selon une certaine structure.


Sujet :

Shell et commandes GNU

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    février 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : février 2018
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Insérer des données selon une certaine structure.
    Bonjour,

    Je suis débutant en Shell, j'ai un fichier avec une structure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var1 : blabla
    var2 : blibli
    var3 : x=nombre; y=nombre; z=nombre

    Mon but est d'ajouter dans ce fichier des lignes respectant la même structure.

    Pour le moment j'utilise 3
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    read var && echo "$var" >> mon_fichier
    à la suite et je fais en sorte de taper ma chaîne de caractère en respectant la structure de mon fichier.

    Mais j'ai le sentiment de "tricher" un peu et de pas avoir une solution plus optimisée. J'ai vu qu'il a une commande awk pour ce genre de problème mais je n'arrive pas a visualiser la structure à mettre en place car j'ai différents champs séparateurs (mon : et mon ; ).

    J'espère que mon problème est claire et merci de votre aide.

  2. #2
    Expert éminent Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    septembre 2005
    Messages
    4 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : septembre 2005
    Messages : 4 059
    Points : 9 995
    Points
    9 995
    Par défaut
    Bonjour

    D'abord, cette structure a-t-elle un nom ? Ou est-elle faite maison ?
    Si elle est "maison", pourquoi recréer un type de structure plutôt que de d'utiliser JSON, xml, csv, etc ?
    Pour ces formats cités, des outils tous faits existent.

    Sinon, awk est une bonne idée.

    Quel est le fichier d'entrée ? Quel est le fichier de sortie rêvé ?
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    février 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : février 2018
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    J'ai un fichier .txt de la forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var1 : toto
    var2 : tata
    var3 : x=21; y=23; z=14
    c'est moi qui l'ai crée ainsi donc elle est faite maison.

    Et en sorti je souhaite avoir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var1 : toto
    var2 : tata
    var3 : x=21; y=23; z=14
     
    var1 : titi
    var2 : tutu
    var3 : x=23; y=57; z=89
    (c'est un exemple)


    Pour le moment, j'ajoute ces nouvelles données avec la commande que j'ai présenté dans mon premier message mais je cherche une façon plus optimisée de le faire.

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

    Informations forums :
    Inscription : février 2008
    Messages : 5 808
    Points : 15 260
    Points
    15 260
    Par défaut
    « optimisée » selon quel critère ?

    voilà de l'optimisation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    echo "var1 : titi
    var2 : tutu
    var3 : x=23; y=57; z=89" >>tonFichier.txt
    c'est optimisé : il n'y a qu'une commande !

    quelles sont les raisons qui t'ont conduit à adopter ce format ?
    Flodelarab t'as indiqué quelques formats de données.

    le format CSV est le plus facile à manipuler parce qu'il ne nécessite par d'outils externe au shell, et peut quand même s'adapter à ton cas : trois champs, qui peuvent être divisés en "sous-champs" ayant un séparateur de données différents du séparateur principal.
    ton fichier ne fera qu'une ligne à toi de mettre en œuvre les commandes du shell pour maintenir ce fichier dans l'état que tu le souhaites : retenir/modifier les valeurs, et mettre à jour.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Expert éminent Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    décembre 2012
    Messages
    3 301
    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 : 3 301
    Points : 9 498
    Points
    9 498
    Par défaut
    Il y a aussi le read à optimiser, donc le plus simple est :
    Là, suffit de saisir toutes les lignes selon la structure désirée et faire un Control-D pour sortir du fichier...
    Cordialement.

  6. #6
    Expert éminent Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    septembre 2005
    Messages
    4 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : septembre 2005
    Messages : 4 059
    Points : 9 995
    Points
    9 995
    Par défaut
    Kitdev, ne confonds pas le stockage des données et l'affichage des données. Le fond et la forme.

    Tu pourrais stocker utilement (car facilement utilisables) tes données comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ cat structureMaison.txt
    toto;tata;21;23;14
    titi;tutu;23;57;89
    Et si tu trouves cela illisible, faire une commande, un alias, ou un script, pour l'afficher "joliment" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $ awk -F';' '(FNR>1){print "";} {print "var1 :",$1; print "var2 :",$2; print "var3 : x="$3"; y="$4"; z="$5;}' structureMaison.txt
    var1 : toto
    var2 : tata
    var3 : x=21; y=23; z=14
     
    var1 : titi
    var2 : tutu
    var3 : x=23; y=57; z=89
    Ainsi, ajouter un objet dans ta structure en ajoutant une ligne:
    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
    17
    $ echo "tete;tyty;1;2;3" >> structureMaison.txt
    $ cat structureMaison.txt
    toto;tata;21;23;14
    titi;tutu;23;57;89
    tete;tyty;1;2;3
    $ awk -F';' '(FNR>1){print "";} {print "var1 :",$1; print "var2 :",$2; print "var3 : x="$3"; y="$4"; z="$5;}' structureMaison.txt
    var1 : toto
    var2 : tata
    var3 : x=21; y=23; z=14
     
    var1 : titi
    var2 : tutu
    var3 : x=23; y=57; z=89
     
    var1 : tete
    var2 : tyty
    var3 : x=1; y=2; z=3
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    février 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : février 2018
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Merci pour votre aide, j'ai eu un peu mal à la tête en voyant ce awk mais je pense avoir compris. Je vais faire mes tests

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

Discussions similaires

  1. [9][logiciel]Restriction des données selon une période
    Par hondavtec77 dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 14/09/2007, 12h42
  2. [SQL] Insérer des données dans une table
    Par wonga dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 01/08/2007, 13h00
  3. Grouper des données selon une date
    Par gids01 dans le forum iReport
    Réponses: 2
    Dernier message: 30/07/2007, 17h03
  4. Insérer des données dans une BD depuis un fichier .bat
    Par kurkaine dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 24/11/2006, 09h31
  5. Réponses: 26
    Dernier message: 01/07/2006, 14h14

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