Forum Programmation.shell traitement de fichier csv

Posté par  .
Étiquettes : aucune
0
3
mai
2006
Bonjour !

Je débute en shell et je dois faire des opérations sur un fichier.csv (les données à l'intérieur de celui ci sont séparées par des points virgule).
En fait sur certaines lignes la première colonne est vide ( pas de donnée avant le premier point virgule séparateur) , je souhaiterais tout bonnement supprimer du fichier les lignes dont le premier champ (colonne) est vide. Je pense que awk devrait être mon ami dans ce cas mais je ne maitrise pas encore le sujet ...

Voila si quelqu'un peut m'aider sur ce point je l'en remercie par avance !
@+
  • # ou avec sed

    Posté par  (site web personnel) . Évalué à 3.

    Tu veux donc supprimer toutes les lignes qui commencent par un point-virgule (avec éventuellement des espaces avant) :

    sed '/^[ ]*;/d' fichier
    • [^] # Re: ou avec sed

      Posté par  . Évalué à 1.

      Merci !

      J'ai utilisé la commande suivante :
      ( la variable $DAYDATE est déclarée avant :p )
      sed '/^;/d' fichier`echo $DAYDATE`.csv > fichier`echo $DAYDATE`.csv.rm
      mv fichier`echo $DAYDATE`.csv.rm fichier`echo $DAYDATE`.csv

      @+
  • # en awk ....

    Posté par  . Évalué à 4.

    awk -F\; '{ if($1 != "") { print $0}}' fichier_a_traiter
  • # avec grep

    Posté par  . Évalué à 3.

    grep -E -v '^;' fichier.csv
  • # avec php

    Posté par  . Évalué à 3.

    en php,
    ya une fonction bien sympas qui je crois s'apelle freadcsv
    le php est tres pratique (plus que sed awk..) pour ce qui est du debugage (tu peux facilement placer un echo sur une ligne.

    mon conseil, tu li le fichier (freadcsv), tu traite et tu ecrit le fichier resultat.
    • [^] # Re: avec php

      Posté par  . Évalué à 2.

      Euh a mon humble avis le php rajoute une couche pas forçément nécessaire dans ce cas ...
      • [^] # Re: avec php

        Posté par  . Évalué à 2.

        ben je ne vois pas, il s'agit d'un language de script interpreté comme peu l'être le perl ou le python par exemple.

        et même si ca "rajoute" une couche, y a t'il un impact reel ?
        Je veux dire, s'agit 'il de traiter 200 milliard de lignes en moins de 30 secondes ? je ne pense pas.

        L'avantage est le temps et la facilité de développement, même si ceci peut se payer par un temps d'execution d'une demi seconde supplementaire. (j'ai pas fais de bench).
  • # avec python

    Posté par  . Évalué à 2.

    En utilisant le module csv :
    import csv
    r = csv.reader(file("fichier.csv"))
    w = csv.writer(file("resultat.csv", "w"))
    for ligne in r:
      if ligne[0] != "":
        w.writerow(ligne)
    
    Un peu comme pour le PHP cité plus haut, tu as toutes les possibilités de python pour faire d'autres choses avec.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.