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 :

Ajout d'une colonne dans un fichier csv


Sujet :

Shell et commandes GNU

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 47
    Points : 37
    Points
    37
    Par défaut Ajout d'une colonne dans un fichier csv
    Bonjour tous le monde,
    Je suis vraiment debutant en shell script ksh. Je souhaite ajouter un colonne a un fichier csv dont le separateur de champ ";". et je ne sais pas comment faire.
    Voici un exemple du contenu du fichier
    toto;125
    forum;ok
    et je souhaite ajouter un troisieme champ pour avoir
    toto;125;nouveau1
    forum;ok;nouveau2
    Merci de votre aide

  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,

    d'où viennent les données à ajouter ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 47
    Points : 37
    Points
    37
    Par défaut
    Les donnees à ajouter? disons une seule donnee à ajouter à toutes les lignes. Par exemple la valeur "OUI".
    toto;125;OUI
    forum;ok;OUI

  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
    Comment parcourir un fichier

    après il y a des solutions plus économiques en resources système, telle que sed, ou awk.
    ça dépend de la taille du fichier.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 792
    Points : 1 206
    Points
    1 206
    Par défaut
    Version awk:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk '{print $0";OUI"}' fichier
    :q :q! :wq :w :w! :wq! :quit :quit! :help help helpquit quit quithelp
    :quitplease :quitnow :leave :shit ^X^C ^C ^D ^Z ^Q QUITDAMMIT
    Jabber: ripat at im.apinc.org

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Une version sed:

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 47
    Points : 37
    Points
    37
    Par défaut
    formidable!! Un grand MERCI.
    J'utilise aussi la commande sed pour supprimer les lignes vides. Est il possible de faire en une seul commande sed suppression de ligne vide et insertion colonne?
    Par exple:
    sed (supprimer lignes vides) et (ajouter OUI)
    Merci

  8. #8
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Salut,

    Citation Envoyé par sorilazer Voir le message
    J'utilise aussi la commande sed pour supprimer les lignes vides. Est il possible de faire en une seul commande sed suppression de ligne vide et insertion colonne?
    Oui sed '/^$/d;s/$/;OUI/' fichier
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 792
    Points : 1 206
    Points
    1 206
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk '$0{print $0";OUI"}' fichier
    :q :q! :wq :w :w! :wq! :quit :quit! :help help helpquit quit quithelp
    :quitplease :quitnow :leave :shit ^X^C ^C ^D ^Z ^Q QUITDAMMIT
    Jabber: ripat at im.apinc.org

  10. #10
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par zipe31 Voir le message
    sed '/^$/d;s/$/;OUI/' fichier
    Rq: si OUI est dans une variable, voire contient des espaces, il faut backquoter les dollars (comme j'avais fait précédemment) ou jongler avec les quotes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var="OUI ou NON"
    sed '/^$/d;s/$/'";${var}/" fichier

  11. #11
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 792
    Points : 1 206
    Points
    1 206
    Par défaut
    Si le traitement doit se faire de manière récurrente sur de gros fichiers, préférer la version awk plus véloce. Ou même mieux encore, mawk.

    Test sur un fichier de 1589055 lignes:
    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
     
    jeanluc@ibm:~/scripts/test$ time sed '/^$/d;s/$/;OUI/' f > /dev/null
     
    real	0m1.409s
    user	0m1.388s
    sys	0m0.016s
    jeanluc@ibm:~/scripts/test$ time awk '$0{print $0";OUI"}' f > /dev/null
     
    real	0m0.648s
    user	0m0.636s
    sys	0m0.008s
    jeanluc@ibm:~/scripts/test$ time mawk '$0{print $0";OUI"}' f > /dev/null
     
    real	0m0.233s
    user	0m0.228s
    sys	0m0.000s
    :q :q! :wq :w :w! :wq! :quit :quit! :help help helpquit quit quithelp
    :quitplease :quitnow :leave :shit ^X^C ^C ^D ^Z ^Q QUITDAMMIT
    Jabber: ripat at im.apinc.org

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 47
    Points : 37
    Points
    37
    Par défaut
    Merci a tout le monde mon probleme est resolu. Jai utilisé
    sed '/^$/d;s/$/;OUI/' fichier
    Ca fait l'affaire

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

Discussions similaires

  1. [Toutes versions] Ajouter une colonne dans un fichier dbf à partir d'ACCESS
    Par loufab dans le forum Contribuez
    Réponses: 2
    Dernier message: 13/05/2012, 13h07
  2. Ajout d'une colonne dans un fichier
    Par mimi7344 dans le forum MATLAB
    Réponses: 5
    Dernier message: 20/09/2011, 10h26
  3. resultat d'une requete dans un fichier csv
    Par PAYASS59 dans le forum Requêtes
    Réponses: 1
    Dernier message: 21/09/2005, 21h14
  4. [débutant] nombre de colonne dan sun fichier csv
    Par mandagor dans le forum C++
    Réponses: 18
    Dernier message: 15/06/2005, 15h42
  5. Ajout d'une colonne dans une table ...
    Par Djedjeridoo dans le forum SQL
    Réponses: 2
    Dernier message: 22/07/2003, 16h12

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