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 :

Conversion fichier plat vers CSV


Sujet :

Shell et commandes GNU

  1. #1
    Membre averti Avatar de linar009
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    497
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 497
    Points : 323
    Points
    323
    Par défaut Conversion fichier plat vers CSV
    Bonjour,

    J'aimerais convertir un fichier plat avec pour délimiteur des tabulations en un fichier CSV (délimiteur ; ).

    Voici le format de mon fichier actuel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1234    titi toto      0008999999   234
    Et j'aimerais obtenir un fichier CSV de la sorte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    234;1234;0008999999;titi toto
    Sachant que le deuxième champ peut contenir des espaces (comme "titi toto" dans mon exemple)

    Pourriez-vous m'aider à écrire un shell qui ferait cela ?

    Merci par avance.

    Cordialement,

  2. #2
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Points : 4 029
    Points
    4 029
    Par défaut
    sed est tout à fait ce qu'il te faut.

    Tu peux décrire avec cette outil le comportement suivant :
    Dés que je rencontre un ou plusieurs espaces, je le(ou les) remplace par un ;

  3. #3
    Membre averti Avatar de linar009
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    497
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 497
    Points : 323
    Points
    323
    Par défaut
    ok, mais le problème est qu'il ne s'agit pas de simples espaces mais de tabulations.
    De plus, mes champs ne sont pas dans l'ordre souhaité...

    Pourriez-vous m'en dire un peu plus sur SED ? Merci.

  4. #4
    Membre éclairé Avatar de Spoutnik
    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    672
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 672
    Points : 781
    Points
    781
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i 's/\t/;/g' fichier_plat.txt
    -i : mode édition : ton fichier sera modifié
    entre les quotes :
    s : substitue ce qu'il y a entre les 2 premier '/' par ce qu'il y a entre le 2 et 3e '/'
    \t : tabulation
    g : global, change toutes les occurences rencontrées dans l'ensemble du fichier texte

    ++

    Par contre pour changer l'ordre des champ, regarde plutot du coté de AWK, ca correspond plus à ton besoin
    Ex : pour virer les espaces, et mettre les champ dans l'ordre indiqué dans ton exemple + remplacer les"tab" par ";" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cat fichier_plat.txt| sed  's/ //g' | awk -F '\t' '{print $5";"$1 ";"$4";"$2";"$3}'
    EDIT : correction du awk

  5. #5
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Points : 4 029
    Points
    4 029
    Par défaut
    on peut aussi substituer/supprimer un caractère unique avec tr.

  6. #6
    Membre averti Avatar de linar009
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    497
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 497
    Points : 323
    Points
    323
    Par défaut
    Ok, c'est bon j'ai réussi grâce à vous.
    Merci beaucoup pour votre aide ! Ca fait plaisir

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

Discussions similaires

  1. awk fichier plat vers csv
    Par jadey dans le forum Shell et commandes GNU
    Réponses: 22
    Dernier message: 27/10/2009, 14h37
  2. Exporter fichier XLS vers CSV
    Par arnaud_verlaine dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 10/09/2007, 17h47
  3. Réponses: 2
    Dernier message: 20/08/2007, 14h36
  4. [XML] fichier plat vers xml
    Par jasminrose dans le forum APIs
    Réponses: 22
    Dernier message: 16/04/2007, 17h37
  5. Importation fichier plat vers Mysql
    Par xender dans le forum Requêtes
    Réponses: 3
    Dernier message: 09/05/2006, 22h36

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