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 :

Lecture de fichier ligne à ligne


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2015
    Messages : 10
    Par défaut Lecture de fichier ligne à ligne
    Bonjour,

    je suis actuellement en train d'écrire un script shell pour récupérer les informations utiles dans un fichier .csv.

    J'ai dévellopé ce script sur une distibution linux propre à EDF et basé sur une souche debian 8.

    Jusque là aucun problème. Les ennuis commence après avoir copié mon script sur un cluster de calcul qui tourne sous debian 7.

    J'ai copié le fichier csv également en prenant bien soin de faire un md5sum pour vérifier l'intégrité de ma copie, et l'intégrité du script. RAS !!

    Le problème que j'ai identifié viendrait du while read line... Ci dessous de copie d'écran du while read line faite sur le même fichier csv sur deux machine différente, une sur mon poste, l'autre sur le cluster.
    (j'ai ajouté un head -5, le fichier csv faisant plus de 8000 lignes)

    Sur mon poste:
    Nom : Capture du 2015-12-30 16:09:14.png
Affichages : 135
Taille : 25,5 Ko

    Sur le Cluster:
    Nom : Capture du 2015-12-30 16:10:57.png
Affichages : 117
Taille : 22,0 Ko



    Voila dans un cas le read ne lit pas la ligne jusqu'au bout, ce qui fout en l'air tous les tests que j'avais pu faire par la suite dans mon script.
    Dans le doute j'ai eu l'idée d'afficher les deux premieres lignes sur le cluster histoire d'être sur que le fichier csv était intègre, et sans surprise il l'est....
    Nom : Capture du 2015-12-30 16:16:08.png
Affichages : 125
Taille : 17,2 Ko

    Bref je sèche et cela m'empêche d'avancer. Si jamais une bonne âme avait un début d'idée sur la nature de mon problème je lui en saurai gré.

    PLS HELP !!!!

  2. #2
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 256
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 256
    Par défaut
    Déjà les signes cabalystiques c'est pas top.

    Un prob d'encodage ne pourrait t'il pas poser problème ?
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  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 Takezoshi Voir le message
    Bref je sèche et cela m'empêche d'avancer. Si jamais une bonne âme avait un début d'idée sur la nature de mon problème je lui en saurai gré.

    PLS HELP !!!!
    Bizarre, en effet!

    Peux-tu copier/coller le texte (et non une copie d'écran, please) du résultat de la commande (sur le cluster), de préférence entre balises CODE (cliquer sur le dièse):
    et aussi (pour voir s'il y a des caractères bizarres (notamment autour du 5ème champ)) le résultat de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    head -5 Fe-59.pst.csv | od -c
    Peux-tu faire un essai en remplaçant dans ton script echo $line par echo "$line" (juste pour voir).

    Et peut-être aussi un essai en remplaçant read line par read -r line (juste pour voir...)

  4. #4
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 287
    Par défaut
    Bonjour

    J'ai eu le même réflexe que Jack-ft sur l'absence de double-quote. Mais en fait c'est plus simple: Tu n'as pas défini ton séparateur ! Et par défaut, c'est l'espace. Il faut dire que c'est la virgule.

    Je copie-colle tous mes tests:

    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
    20
    21
    22
    23
    $ vline=''
    $ echo $vline;echo toto
     
    toto
    $ read a b c d < <(echo 'a, b,, c, d')                                                                                                                                                                   
    $ echo $a
    a,
    $ echo $b
    b,,
    $ echo $c
    c,
    $ echo $d
    d
    $ IFS=',' read a b c d < <(echo 'a, b,, c, d')                                                                                                                                                           
    $ echo $a
    a
    $ echo $b
    b
    $ echo $c
     
    $ echo $d
    c, d
    $
    Dans le deuxième read, il a bien compris que le séparateur était la virgule.
    Attention ! Définir l'IFS avant la commande ne le modifie QUE pour la commande.

    Conseil perso: si tu manipules des csv, pense à utiliser awk.

  5. #5
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2015
    Messages : 10
    Par défaut
    Par rapport à ce que tu disais Flodelarab, changer l'IFS ne change rien au problème. Ce qui ne me surprend pas, en effet si c'était un problem d'IFS et que le premier avait compris que l'IFS courant était la virgule, il n'y aurait que le champs correspondant à l'année dans $line (cad 2006), où alors c'est que j'ai vraiment rien compris au schmilblick =)
    Après tu as peut etre un début de piste...

    Sinon, j'ai fait les test que tu me demandais jack-ft, et ca n'avance pas tellement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Cluster# head -5 Fe-59.pst.csv 
     Year,Day,Hour,Time(s),Receptor name,R(m),Theta(degrees),Z(m),Conc|Bq/m�|FE-59|Source773|-| 1hr,Dry|Bq/m�/s|FE-59|Source773|-| 1hr,Wet|Bq/m�/s|FE-59|Source773|-| 1hr,Tot|Bq/m�/s|FE-59|Source773|-| 1hr,Conc|Bq/m�|CO-59|Source773|-| 1hr,Dry|Bq/m�/s|CO-59|Source773|-| 1hr,Wet|Bq/m�/s|CO-59|Source773|-| 1hr,Tot|Bq/m�/s|CO-59|Source773|-| 1hr
     2006,    1,    0,     -999,,     500.00,       0.00,       1.00, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03
     2006,    1,    0,     -999,,     500.00,      10.00,       1.00, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03
     2006,    1,    0,     -999,,     500.00,      20.00,       1.00, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03
     2006,    1,    0,     -999,,     500.00,      30.00,       1.00, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03

    et voila pour la représentation octal:
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
     
    Cluster# head -5 Fe-59.pst.csv | od -c
    0000000       Y   e   a   r   ,   D   a   y   ,   H   o   u   r   ,   T
    0000020   i   m   e   (   s   )   ,   R   e   c   e   p   t   o   r    
    0000040   n   a   m   e   ,   R   (   m   )   ,   T   h   e   t   a   (
    0000060   d   e   g   r   e   e   s   )   ,   Z   (   m   )   ,   C   o
    0000100   n   c   |   B   q   /   m 263   |   F   E   -   5   9   |   S
    0000120   o   u   r   c   e   7   7   3   |   -   |       1   h   r   ,
    0000140   D   r   y   |   B   q   /   m 262   /   s   |   F   E   -   5
    0000160   9   |   S   o   u   r   c   e   7   7   3   |   -   |       1
    0000200   h   r   ,   W   e   t   |   B   q   /   m 262   /   s   |   F
    0000220   E   -   5   9   |   S   o   u   r   c   e   7   7   3   |   -
    0000240   |       1   h   r   ,   T   o   t   |   B   q   /   m 262   /
    0000260   s   |   F   E   -   5   9   |   S   o   u   r   c   e   7   7
    0000300   3   |   -   |       1   h   r   ,   C   o   n   c   |   B   q
    0000320   /   m 263   |   C   O   -   5   9   |   S   o   u   r   c   e
    0000340   7   7   3   |   -   |       1   h   r   ,   D   r   y   |   B
    0000360   q   /   m 262   /   s   |   C   O   -   5   9   |   S   o   u
    0000400   r   c   e   7   7   3   |   -   |       1   h   r   ,   W   e
    0000420   t   |   B   q   /   m 262   /   s   |   C   O   -   5   9   |
    0000440   S   o   u   r   c   e   7   7   3   |   -   |       1   h   r
    0000460   ,   T   o   t   |   B   q   /   m 262   /   s   |   C   O   -
    0000500   5   9   |   S   o   u   r   c   e   7   7   3   |   -   |    
    0000520   1   h   r  \r  \n       2   0   0   6   ,                   1
    0000540   ,                   0   ,                       -   9   9   9
    0000560   ,  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
    0000600  \0  \0  \0  \0  \0   ,                       5   0   0   .   0
    0000620   0   ,                               0   .   0   0   ,        
    0000640                       1   .   0   0   ,       -   0   .   9   9
    0000660   9   0   0   0   E   +   0   3   ,       -   0   .   9   9   9
    0000700   0   0   0   E   +   0   3   ,       -   0   .   9   9   9   0
    0000720   0   0   E   +   0   3   ,       -   0   .   9   9   9   0   0
    0000740   0   E   +   0   3   ,       -   0   .   9   9   9   0   0   0
    0000760   E   +   0   3   ,       -   0   .   9   9   9   0   0   0   E
    0001000   +   0   3   ,       -   0   .   9   9   9   0   0   0   E   +
    0001020   0   3   ,       -   0   .   9   9   9   0   0   0   E   +   0
    0001040   3  \r  \n       2   0   0   6   ,                   1   ,    
    0001060               0   ,                       -   9   9   9   ,  \0
    0001100  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
    0001120  \0  \0  \0   ,                       5   0   0   .   0   0   ,
    0001140                           1   0   .   0   0   ,                
    0001160               1   .   0   0   ,       -   0   .   9   9   9   0
    0001200   0   0   E   +   0   3   ,       -   0   .   9   9   9   0   0
    0001220   0   E   +   0   3   ,       -   0   .   9   9   9   0   0   0
    0001240   E   +   0   3   ,       -   0   .   9   9   9   0   0   0   E
    0001260   +   0   3   ,       -   0   .   9   9   9   0   0   0   E   +
    0001300   0   3   ,       -   0   .   9   9   9   0   0   0   E   +   0
    0001320   3   ,       -   0   .   9   9   9   0   0   0   E   +   0   3
    0001340   ,       -   0   .   9   9   9   0   0   0   E   +   0   3  \r
    0001360  \n       2   0   0   6   ,                   1   ,            
    0001400       0   ,                       -   9   9   9   ,  \0  \0  \0
    0001420  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
    0001440  \0   ,                       5   0   0   .   0   0   ,        
    0001460                   2   0   .   0   0   ,                        
    0001500       1   .   0   0   ,       -   0   .   9   9   9   0   0   0
    0001520   E   +   0   3   ,       -   0   .   9   9   9   0   0   0   E
    0001540   +   0   3   ,       -   0   .   9   9   9   0   0   0   E   +
    0001560   0   3   ,       -   0   .   9   9   9   0   0   0   E   +   0
    0001600   3   ,       -   0   .   9   9   9   0   0   0   E   +   0   3
    0001620   ,       -   0   .   9   9   9   0   0   0   E   +   0   3   ,
    0001640       -   0   .   9   9   9   0   0   0   E   +   0   3   ,    
    0001660   -   0   .   9   9   9   0   0   0   E   +   0   3  \r  \n    
    0001700   2   0   0   6   ,                   1   ,                   0
    0001720   ,                       -   9   9   9   ,  \0  \0  \0  \0  \0
    0001740  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0   ,
    0001760                       5   0   0   .   0   0   ,                
    0002000           3   0   .   0   0   ,                               1
    0002020   .   0   0   ,       -   0   .   9   9   9   0   0   0   E   +
    0002040   0   3   ,       -   0   .   9   9   9   0   0   0   E   +   0
    0002060   3   ,       -   0   .   9   9   9   0   0   0   E   +   0   3
    0002100   ,       -   0   .   9   9   9   0   0   0   E   +   0   3   ,
    0002120       -   0   .   9   9   9   0   0   0   E   +   0   3   ,    
    0002140   -   0   .   9   9   9   0   0   0   E   +   0   3   ,       -
    0002160   0   .   9   9   9   0   0   0   E   +   0   3   ,       -   0
    0002200   .   9   9   9   0   0   0   E   +   0   3  \r  \n
    0002215
    Et la effectivement on peut voir qu'après le champs avec 999, il ya une suite d' \0 pour le champs supposés être vide. Est ce que l'erreur pourrait venir de là ?

    Enfin pour répondre à chrtophe, il y a effectivement un problème d'encodage, doù les signes cabbalistiques, mais ceci sont situé à la première ligne et ce sont les autres qui coincent, je ne pense donc pas que le problème puisse venir de là.

    En tout cas merci à tous pour vos réponses.

  6. #6
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 347
    Par défaut
    Bonjour,
    Ce qui serait bien dans ton cas, ce serait de pouvoir supprimer les '\0' à la source, sinon voici des exemples...

    Le fichier:
    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
    20
    21
    22
    23
    $ sed -n 'l' bob.txt
     Year,Day,Hour,Time(s),Receptor name,R(m),Theta(degrees),Z(m),Conc|Bq\
    /m�|FE-59|Source773|-| 1hr,Dry|Bq/m�/s|FE-59|Source773|\
    -| 1hr,Wet|Bq/m�/s|FE-59|Source773|-| 1hr,Tot|Bq/m�/s|F\
    E-59|Source773|-| 1hr,Conc|Bq/m�|CO-59|Source773|-| 1hr,Dry|Bq\
    /m�/s|CO-59|Source773|-| 1hr,Wet|Bq/m�/s|CO-59|Source77\
    3|-| 1hr,Tot|Bq/m�/s|CO-59|Source773|-| 1hr$
     2006,    1,    0,     -999,\000\000\000\000\000\000\000\000\000\000,\
         500.00,       0.00,       1.00, -0.999000E+03, -0.999000E+03, -0\
    .999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+\
    03, -0.999000E+03$
     2006,    1,    0,     -999,\000\000\000\000\000\000\000\000\000\000,\
         500.00,      10.00,       1.00, -0.999000E+03, -0.999000E+03, -0\
    .999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+\
    03, -0.999000E+03$
     2006,    1,    0,     -999,\000\000\000\000\000\000\000\000\000\000,\
         500.00,      20.00,       1.00, -0.999000E+03, -0.999000E+03, -0\
    .999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+\
    03, -0.999000E+03$
     2006,    1,    0,     -999,\000\000\000\000\000\000\000\000\000\000,\
         500.00,      30.00,       1.00, -0.999000E+03, -0.999000E+03, -0\
    .999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+\
    03, -0.999000E+03$
    Le code qui ne fonctionne pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $ while read line ; do echo "$line" ; done <bob.txt
    Year,Day,Hour,Time(s),Receptor name,R(m),Theta(degrees),Z(m),Conc|Bq/m�|FE-59|Source773|-| 1hr,Dry|Bq/m�/s|FE-59|Source773|-| 1hr,Wet|Bq/m�/s|FE-59|Source773|-| 1hr,Tot|Bq/m�/s|FE-59|Source773|-| 1hr,Conc|Bq/m�|CO-59|Source773|-| 1hr,Dry|Bq/m�/s|CO-59|Source773|-| 1hr,Wet|Bq/m�/s|CO-59|Source773|-| 1hr,Tot|Bq/m�/s|CO-59|Source773|-| 1hr
    2006,    1,    0,     -999,
    2006,    1,    0,     -999,
    2006,    1,    0,     -999,
    2006,    1,    0,     -999,
    Un code qui fonctionne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $ tr -d '\0' <bob.txt | while read line ; do echo "$line" ; done
    Year,Day,Hour,Time(s),Receptor name,R(m),Theta(degrees),Z(m),Conc|Bq/m�|FE-59|Source773|-| 1hr,Dry|Bq/m�/s|FE-59|Source773|-| 1hr,Wet|Bq/m�/s|FE-59|Source773|-| 1hr,Tot|Bq/m�/s|FE-59|Source773|-| 1hr,Conc|Bq/m�|CO-59|Source773|-| 1hr,Dry|Bq/m�/s|CO-59|Source773|-| 1hr,Wet|Bq/m�/s|CO-59|Source773|-| 1hr,Tot|Bq/m�/s|CO-59|Source773|-| 1hr
    2006,    1,    0,     -999,,     500.00,       0.00,       1.00, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03
    2006,    1,    0,     -999,,     500.00,      10.00,       1.00, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03
    2006,    1,    0,     -999,,     500.00,      20.00,       1.00, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03
    2006,    1,    0,     -999,,     500.00,      30.00,       1.00, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03
    La version sans le pipe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $ while read line ; do echo "$line" ; done < <(<bob.txt tr -d '\0')
    Year,Day,Hour,Time(s),Receptor name,R(m),Theta(degrees),Z(m),Conc|Bq/m�|FE-59|Source773|-| 1hr,Dry|Bq/m�/s|FE-59|Source773|-| 1hr,Wet|Bq/m�/s|FE-59|Source773|-| 1hr,Tot|Bq/m�/s|FE-59|Source773|-| 1hr,Conc|Bq/m�|CO-59|Source773|-| 1hr,Dry|Bq/m�/s|CO-59|Source773|-| 1hr,Wet|Bq/m�/s|CO-59|Source773|-| 1hr,Tot|Bq/m�/s|CO-59|Source773|-| 1hr
    2006,    1,    0,     -999,,     500.00,       0.00,       1.00, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03
    2006,    1,    0,     -999,,     500.00,      10.00,       1.00, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03
    2006,    1,    0,     -999,,     500.00,      20.00,       1.00, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03
    2006,    1,    0,     -999,,     500.00,      30.00,       1.00, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03
    ou:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $ while read line ; do echo "$line" ; done < <(tr -d '\0' <bob.txt)
    Year,Day,Hour,Time(s),Receptor name,R(m),Theta(degrees),Z(m),Conc|Bq/m�|FE-59|Source773|-| 1hr,Dry|Bq/m�/s|FE-59|Source773|-| 1hr,Wet|Bq/m�/s|FE-59|Source773|-| 1hr,Tot|Bq/m�/s|FE-59|Source773|-| 1hr,Conc|Bq/m�|CO-59|Source773|-| 1hr,Dry|Bq/m�/s|CO-59|Source773|-| 1hr,Wet|Bq/m�/s|CO-59|Source773|-| 1hr,Tot|Bq/m�/s|CO-59|Source773|-| 1hr
    2006,    1,    0,     -999,,     500.00,       0.00,       1.00, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03
    2006,    1,    0,     -999,,     500.00,      10.00,       1.00, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03
    2006,    1,    0,     -999,,     500.00,      20.00,       1.00, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03
    2006,    1,    0,     -999,,     500.00,      30.00,       1.00, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03, -0.999000E+03
    Attention: il faut un espace entre les 2 '<' ( < <(.....) )

  7. #7
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2015
    Messages : 10
    Par défaut
    Merci beaucoup disedorgue

    Pourrais je abuser de ton savoir et te demander à quoi servent les doubles "<". Un simple chevron n'aurait sans doute pas suffit et j'aimerais comprendre pourquoi ...

    Si d'autres ont la réponse ils sont les bienvenus. =)

  8. #8
    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 Takezoshi Voir le message
    Sinon, j'ai fait les test que tu me demandais jack-ft, et ca n'avance pas tellement
    Si, si, avec la représentation en octal!

    et voila pour la représentation octal:
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
     
    Cluster# head -5 Fe-59.pst.csv | od -c
    0000000       Y   e   a   r   ,   D   a   y   ,   H   o   u   r   ,   T
    0000020   i   m   e   (   s   )   ,   R   e   c   e   p   t   o   r    
    0000040   n   a   m   e   ,   R   (   m   )   ,   T   h   e   t   a   (
    0000060   d   e   g   r   e   e   s   )   ,   Z   (   m   )   ,   C   o
    0000100   n   c   |   B   q   /   m 263   |   F   E   -   5   9   |   S
    0000120   o   u   r   c   e   7   7   3   |   -   |       1   h   r   ,
    0000140   D   r   y   |   B   q   /   m 262   /   s   |   F   E   -   5
    0000160   9   |   S   o   u   r   c   e   7   7   3   |   -   |       1
    0000200   h   r   ,   W   e   t   |   B   q   /   m 262   /   s   |   F
    0000220   E   -   5   9   |   S   o   u   r   c   e   7   7   3   |   -
    0000240   |       1   h   r   ,   T   o   t   |   B   q   /   m 262   /
    0000260   s   |   F   E   -   5   9   |   S   o   u   r   c   e   7   7
    0000300   3   |   -   |       1   h   r   ,   C   o   n   c   |   B   q
    0000320   /   m 263   |   C   O   -   5   9   |   S   o   u   r   c   e
    0000340   7   7   3   |   -   |       1   h   r   ,   D   r   y   |   B
    0000360   q   /   m 262   /   s   |   C   O   -   5   9   |   S   o   u
    0000400   r   c   e   7   7   3   |   -   |       1   h   r   ,   W   e
    0000420   t   |   B   q   /   m 262   /   s   |   C   O   -   5   9   |
    0000440   S   o   u   r   c   e   7   7   3   |   -   |       1   h   r
    0000460   ,   T   o   t   |   B   q   /   m 262   /   s   |   C   O   -
    0000500   5   9   |   S   o   u   r   c   e   7   7   3   |   -   |    
    0000520   1   h   r  \r  \n       2   0   0   6   ,                   1
    0000540   ,                   0   ,                       -   9   9   9
    0000560   ,  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
    0000600  \0  \0  \0  \0  \0   ,                       5   0   0   .   0
    0000620   0   ,                               0   .   0   0   ,        
    0000640                       1   .   0   0   ,       -   0   .   9   9
    0000660   9   0   0   0   E   +   0   3   ,       -   0   .   9   9   9
    0000700   0   0   0   E   +   0   3   ,       -   0   .   9   9   9   0
    0000720   0   0   E   +   0   3   ,       -   0   .   9   9   9   0   0
    0000740   0   E   +   0   3   ,       -   0   .   9   9   9   0   0   0
    0000760   E   +   0   3   ,       -   0   .   9   9   9   0   0   0   E
    0001000   +   0   3   ,       -   0   .   9   9   9   0   0   0   E   +
    0001020   0   3   ,       -   0   .   9   9   9   0   0   0   E   +   0
    0001040   3  \r  \n       2   0   0   6   ,                   1   ,    
    0001060               0   ,                       -   9   9   9   ,  \0
    0001100  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
    0001120  \0  \0  \0   ,                       5   0   0   .   0   0   ,
    0001140                           1   0   .   0   0   ,                
    0001160               1   .   0   0   ,       -   0   .   9   9   9   0
    0001200   0   0   E   +   0   3   ,       -   0   .   9   9   9   0   0
    0001220   0   E   +   0   3   ,       -   0   .   9   9   9   0   0   0
    0001240   E   +   0   3   ,       -   0   .   9   9   9   0   0   0   E
    0001260   +   0   3   ,       -   0   .   9   9   9   0   0   0   E   +
    0001300   0   3   ,       -   0   .   9   9   9   0   0   0   E   +   0
    0001320   3   ,       -   0   .   9   9   9   0   0   0   E   +   0   3
    0001340   ,       -   0   .   9   9   9   0   0   0   E   +   0   3  \r
    0001360  \n       2   0   0   6   ,                   1   ,            
    0001400       0   ,                       -   9   9   9   ,  \0  \0  \0
    0001420  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
    0001440  \0   ,                       5   0   0   .   0   0   ,        
    0001460                   2   0   .   0   0   ,                        
    0001500       1   .   0   0   ,       -   0   .   9   9   9   0   0   0
    0001520   E   +   0   3   ,       -   0   .   9   9   9   0   0   0   E
    0001540   +   0   3   ,       -   0   .   9   9   9   0   0   0   E   +
    0001560   0   3   ,       -   0   .   9   9   9   0   0   0   E   +   0
    0001600   3   ,       -   0   .   9   9   9   0   0   0   E   +   0   3
    0001620   ,       -   0   .   9   9   9   0   0   0   E   +   0   3   ,
    0001640       -   0   .   9   9   9   0   0   0   E   +   0   3   ,    
    0001660   -   0   .   9   9   9   0   0   0   E   +   0   3  \r  \n    
    0001700   2   0   0   6   ,                   1   ,                   0
    0001720   ,                       -   9   9   9   ,  \0  \0  \0  \0  \0
    0001740  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0   ,
    0001760                       5   0   0   .   0   0   ,                
    0002000           3   0   .   0   0   ,                               1
    0002020   .   0   0   ,       -   0   .   9   9   9   0   0   0   E   +
    0002040   0   3   ,       -   0   .   9   9   9   0   0   0   E   +   0
    0002060   3   ,       -   0   .   9   9   9   0   0   0   E   +   0   3
    0002100   ,       -   0   .   9   9   9   0   0   0   E   +   0   3   ,
    0002120       -   0   .   9   9   9   0   0   0   E   +   0   3   ,    
    0002140   -   0   .   9   9   9   0   0   0   E   +   0   3   ,       -
    0002160   0   .   9   9   9   0   0   0   E   +   0   3   ,       -   0
    0002200   .   9   9   9   0   0   0   E   +   0   3  \r  \n
    0002215
    Et la effectivement on peut voir qu'après le champs avec 999, il ya une suite d' \0 pour le champs supposés être vide. Est ce que l'erreur pourrait venir de là ?
    Juste pour conclure: ben oui! Le problème (et non l'erreur) vient bien de là.
    Si une ligne du fichier contient un '\0', il semblerait que la commande read line lise jusqu'à trouver soit la fin de ligne, soit un '\0' (je n'ai rien trouvé à ce sujet dans man bash).

    L'idéal, àmha, serait que le process qui produit le fichier ne mette pas des '\0' au beau milieu d'une ligne!
    Mélanger des données binaires et des caractères n'est pas une bonne idée: ça complique la lecture et l'interprétation des données.
    La preuve!

    Sinon, s'il n'est pas possible de changer le producteur du fichier, les solutions proposées, à base de tr -d '\0', permettent de contourner le problème.

Discussions similaires

  1. Lire un fichier csv ligne à ligne sous Talend
    Par NFHnv dans le forum Développement de jobs
    Réponses: 5
    Dernier message: 13/03/2015, 14h57
  2. Problème de lecture d'un fichier texte ligne à ligne
    Par petit rabot dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 25/05/2011, 14h04
  3. [AC-2000] Export Access vers fichier txt ligne à ligne
    Par jorge54 dans le forum VBA Access
    Réponses: 14
    Dernier message: 23/01/2010, 02h15
  4. Lecture de fichier - dernière ligne non prise en compte
    Par JulienPles dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 16/03/2005, 11h57
  5. Réponses: 2
    Dernier message: 26/09/2003, 14h51

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