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

Linux Discussion :

[debutant] shell et fichier csv


Sujet :

Linux

  1. #1
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    265
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 265
    Points : 98
    Points
    98
    Par défaut [debutant] shell et fichier csv
    Bonjour je desire faire quelque chose de tres classiques en shell.
    C'est a dire recuperer des elements a partir d'un fichier .csv comme par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    varxxx1;varyyy1;varzzz1;varttt1
    varxxx2;varyyy2;varzzz2;varttt1
    varxxx3;varyyy3;varzzz3;varttt1
    .
    .
    .
    etc...sans doute plusieurs milliers de lignes au moins
    par exemple varyyy1 et varttt1 mais sur toutes lignes, puis les afficher -entre eux l'espace sera une tabulation- a la console, et enfin les remettre sur un autre fichier csv.
    Je pense que c'est quelque chose de tres claissique qui se fait rapidement par exemple en java, mais en shell etant donne mes connaissances limites dans ce domaine, je galere

    En vous remerciant a l'avance.


    Cordialement

  2. #2
    LLB
    LLB est déconnecté
    Membre expérimenté
    Inscrit en
    Mars 2002
    Messages
    967
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 967
    Points : 1 410
    Points
    1 410
    Par défaut
    Citation Envoyé par smutmutant2003 Voir le message
    Je pense que c'est quelque chose de tres claissique qui se fait rapidement par exemple en java
    Non, pas vraiment.

    Citation Envoyé par smutmutant2003 Voir le message
    par exemple varyyy1 et varttt1 mais sur toutes lignes, puis les afficher -entre eux l'espace sera une tabulation- a la console, et enfin les remettre sur un autre fichier csv.
    Ce n'est pas très clair. Tu veux avoir comme sortie "varyyy1 <tab> varttt1" ?

    Avec Sed, c'est très simple, il suffit de comprendre les expressions rationnelles (avec les regexp étendues : option -r ou -E).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -r 's/.*;(.*);.*;(.*)/\1\t\2/'
    Pour d'autres opérations de ce genre, tu peux aussi regarder du côté de cut (voire awk si tu veux faire des choses plus complexes).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cut -d';' --output-delimiter='   ' -f2,4

  3. #3
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    265
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 265
    Points : 98
    Points
    98
    Par défaut
    Bonjour et merci pour ton intervention
    par exemple varyyy1 et varttt1 mais sur toutes lignes, puis les afficher -entre eux l'espace sera une tabulation- a la console, et enfin les remettre sur un autre fichier csv.
    Ce n'est pas très clair. Tu veux avoir comme sortie "varyyy1 <tab> varttt1" ?
    On admettra pour l'instant que la tabulation sera un espace, d'autres part ce que je veux faire c'est selectionner le premier element et le quatrieme element de chaque ligne, sur toute la longueur du fichier.
    Comment fait on ça ???
    Et Sed comment l'utilise t'on ??? Dans la boucle??? avant la boucle ???les parametres que tu m'as indique vont avec Sed ??? C'est quoi regexp ???
    Cordialemnent

  4. #4
    LLB
    LLB est déconnecté
    Membre expérimenté
    Inscrit en
    Mars 2002
    Messages
    967
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 967
    Points : 1 410
    Points
    1 410
    Par défaut
    Tu copies-colles dans ton shell les 2 exemples que j'ai donnés (note : j'ai édité mon message peu après l'avoir envoyé, tu ne l'as peut-être pas vu).

    Les 2 commandes lisent les données sur l'entrée standard (ou ajoute le nom du fichier à lire en argument) et ressortent les informations sur la sortie standard.

    Sed et cut itèrent sur toutes les lignes données. Donc, si tu mets sed ou cut dans une boucle (qui parcourt déjà le fichier), ça marchera et ils traiteront juste la ligne en cours. Ou, mieux, tu peux les appeler en dehors de la boucle.

    Man sed et man cut pour les détails.

  5. #5
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    265
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 265
    Points : 98
    Points
    98
    Par défaut
    Ca m'a aide a creer deux fichiers, toutefois serait il possible maintenant de les fusionner.
    Peut on faire ca avec du shell ???

  6. #6
    LLB
    LLB est déconnecté
    Membre expérimenté
    Inscrit en
    Mars 2002
    Messages
    967
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 967
    Points : 1 410
    Points
    1 410
    Par défaut
    Utilise >> pour ajouter en fin de fichier.

    Pour fusionner deux fichiers, voir aussi : man cat, man paste.

  7. #7
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    265
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 265
    Points : 98
    Points
    98
    Par défaut
    Je te remercie pour ces precieuses informations.
    Bien cordialement

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

Discussions similaires

  1. Decouper fichier .csv en SHELL
    Par neGo33 dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 31/03/2011, 12h18
  2. Modifier un fichier csv en script shell
    Par Ghorin dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 26/09/2007, 13h43
  3. [debutant] concaténation de fichiers
    Par Spyco dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 13/07/2005, 10h52
  4. Mise à jour d'une table avec un fichier csv
    Par blackangel dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 26/05/2005, 14h46
  5. Réponses: 2
    Dernier message: 14/05/2004, 12h55

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