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 :

Test -s pour un fichier CSV


Sujet :

Shell et commandes GNU

  1. #1
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Octobre 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 23
    Par défaut Test -s pour un fichier CSV
    Bonjour,

    J'aimerais pouvoir déterminer qu'un fichier de type CSV est vide. Après test, à sa création, la taille d'un fichier CSV n'est pas égale à 0 octet et je ne peux donc pas utiliser un [ if [ !-s fic.csv ].

    Auriez-vous un solution à me proposer ? Merci.

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 636
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 636
    Par défaut
    Bonjour,

    Citation Envoyé par VassR
    Après test, à sa création, la taille d'un fichier CSV n'est pas égale à 0 octet[...]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $ touch fic.csv
    $ stat -c %s fic.csv 
    0
    $ rm fic.csv 
    $ > fic.csv
    $ stat -c %s fic.csv 
    0
    $ rm fic.csv 
    $ ! test -s fic.csv && echo "n'existe pas ou est vide" || echo "existe et n'est pas vide"
    n'existe pas ou est vide
    $ > fic.csv
    $ ! test -s fic.csv && echo "n'existe pas ou est vide" || echo "existe et n'est pas vide"
    n'existe pas ou est vide
    !

    EDIT:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    cat -A fic.csv 
    echo > fic.csv
    cat -A fic.csv 
    $
    cette dernière commande indique que le fichier n'est pas vide, mais contient un retour à la ligne.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 102
    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 102
    Par défaut
    Citation Envoyé par VassR Voir le message
    Bonjour,

    J'aimerais pouvoir déterminer qu'un fichier de type CSV est vide.
    bonjour, j'imagine que tu veux dire "vide de données pertinentes"?

    Après test, à sa création, la taille d'un fichier CSV n'est pas égale à 0 octet et je ne peux donc pas utiliser un [ if [ !-s fic.csv ]..
    Comment a-t-il été créé et que contient-il?
    Que donne le résultat de la commande proposée par N_BaH:
    ou bien

  4. #4
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Par défaut
    Bonjour.

    S'il s'agit bien de tester si le fichier est vide de données pertinentes, voici un exemple de test en bash 3 (et plus) que tu peux reproduire :

    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
    18
    19
    [idriss@hp-dv6:~]$ cat test.csv # pas vide mais sans données exploitables
    ;;;;
    ;;;;
     
    ; ; ;
    [idriss@hp-dv6:~]$ [[ $(cat test.csv) =~ [^\;\ ]+$ ]] && echo "ok" || echo "ko"
    ko
    [idriss@hp-dv6:~]$ cat test2.csv # vide
    [idriss@hp-dv6:~]$ [[ $(cat test2.csv) =~ [^\;\ ]+$ ]] && echo "ok" || echo "ko"
    ko
    [idriss@hp-dv6:~]$ cat test3.csv  # avec des données exploitables
    toto;titi;tata
    tutu;tete;tyty
    [idriss@hp-dv6:~]$ [[ $(cat test3.csv) =~ [^\;\ ]+$ ]] && echo "ok" || echo "ko"
    ok
    [idriss@hp-dv6:~]$ cat test4.csv # avec un saut de ligne
     
    [idriss@hp-dv6:~]$ [[ $(cat test4.csv) =~ [^\;\ ]+$ ]] && echo "ok" || echo "ko"
    ko
    Sinon tu peux passer par la commande grep ou autres pour tester ce type d'expression (dans d'autres shells qui n'offrent pas cette possibilité) ...

    Cordialement,
    Idriss

Discussions similaires

  1. Choix du repertoire pour création fichier csv
    Par edenyorke dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 02/07/2007, 10h45
  2. Réponses: 1
    Dernier message: 26/01/2007, 08h15
  3. [SQL] Problème exécution sql pour insertion fichier csv
    Par Kyvin dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 20/08/2006, 17h47
  4. [CSV] Détecter le séparateur pour les fichiers CSV
    Par JavaEli dans le forum Langage
    Réponses: 1
    Dernier message: 30/11/2005, 23h42
  5. [Excel] séparateur pour les fichiers csv
    Par drinkmilk dans le forum Excel
    Réponses: 2
    Dernier message: 27/08/2005, 14h21

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