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

Linux Discussion :

Lecture de fichier


Sujet :

Linux

  1. #1
    Membre éclairé
    Profil pro
    Responsable test de charge
    Inscrit en
    Février 2006
    Messages
    186
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable test de charge

    Informations forums :
    Inscription : Février 2006
    Messages : 186
    Par défaut Lecture de fichier
    Bonjour,
    j'ai un fichier dans le nom est de la forme suivante :

    2006-07-04 10-38-00,254-0497234110-1111-0.TIF

    Je voudrais utilisé ce fichier cependant je n'arrive pas à récupérer le titre en entier à cause de l'espace qu'il comporte.


    Je voudrais savoir comment puis-je faire?

    Merci

  2. #2
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 890
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 890
    Par défaut
    Salut,

    Il faut ajouter un \ devant ton espace, pour qu'il soit prit en compte.

    A+

  3. #3
    Membre éclairé
    Profil pro
    Responsable test de charge
    Inscrit en
    Février 2006
    Messages
    186
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable test de charge

    Informations forums :
    Inscription : Février 2006
    Messages : 186
    Par défaut
    Merci de la réponse mais le problème est que le nom du fichier que je traite ne m'est pas connus au départ.

    Cependant, je sais par expérience qu'il est de la forme suivante :

    2006-07-04 10-38-00,254-0497234110-1111-0.TIF

    JE ne peux donc pas tilisé de balise " \ " pour netraliser l'espace. Je dois donc utiliser une autre méthode mais je n'en connais pas.

  4. #4
    Membre expérimenté

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Par défaut
    Je ne comprends pas tout. Si tu sais à l'avance que l'espace est situé au même endroit, je ne vois pas où est le problème.

  5. #5
    Membre éclairé
    Profil pro
    Responsable test de charge
    Inscrit en
    Février 2006
    Messages
    186
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable test de charge

    Informations forums :
    Inscription : Février 2006
    Messages : 186
    Par défaut
    60% des fichiers que je recois sont de cette forme là.
    C'est à dire qu'il contiennent un espace juste après la date.

    Cependant, dans 40% des cas rencontrés, ce n'est pas le cas.
    Le nom du fichier peut commencé par autre chose ( destinataire, source, ...) et comorté plusieurs ESPACE.

    Je ne peux donc pas utilisé cela de manière automatisé.

  6. #6
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 890
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 890
    Par défaut
    Je ne comprend pas bien ton problème...
    Tu utilises un langage de script spécifique ? Pourquoi ne pas utiliser des jokers, comme * par exemple ?

    Enfin attend, tu te pose la question par rapport à la création d'un programme ?

    Tu peux taper en ligne de commande la touche TAB, pour compléter le nom d'un fichier : tu tapes les premières lettres, puis TAB, et ainsi de suite, jusqu'à ce que tu aies le nom complet de ton fichier.

  7. #7
    Membre Expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Par défaut
    Il peut suffire de mettre des guillemets autour du nom de fichier, ou autour de la variable contenant ce nom s'il est stocké dans une variable d'environnement.

    Sinon, il suffit de changer la valeur du séparateur de champs pour indiquer au shell que le blanc est un caractère comme les autres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    OLD_IFS=$IFS
    IFS=$'\t\n'
    # traitement sur le fichier avec un blanc dans le nom
    IFS=$OLD_IFS
    Bonne continuation.

  8. #8
    Membre éclairé
    Profil pro
    Responsable test de charge
    Inscrit en
    Février 2006
    Messages
    186
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable test de charge

    Informations forums :
    Inscription : Février 2006
    Messages : 186
    Par défaut
    Merci.

    Je n'ai pas réussi à intégrer ton explication à la commande AWK qui me permet de filtrer mes données.

    Comment faire exactement ? Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ls FOLDER  > temp
    a=$(awk '{print $1}' temp)

    LA variable $a contient alors l'ensemble des titre de fichiers dont j'ai besoin.
    Et je l'ai utilise comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for i in $a;
    do	
    	echo $i
    done
    Le problème vien donc de la commande AWK qui ne récupère pas le nom mais elle ne m'ets pas famillière.

    Peut-on, m'aider ?

    MErci d'avance

  9. #9
    Membre Expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Par défaut
    Alors les deux options que j'ai donné sont valides : ou bien

  10. #10
    Membre éclairé
    Profil pro
    Responsable test de charge
    Inscrit en
    Février 2006
    Messages
    186
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable test de charge

    Informations forums :
    Inscription : Février 2006
    Messages : 186
    Par défaut
    Désolé mais cela n'est toujours pas claire.

    Je pensais que je devais traité le fichier directement car lu icontient le bon format avec les espaces et le nom de chaque fichiers au complet.

    Mais là, tu me parles de l'utilisation.

    Peux tu m'éclairer davantage

  11. #11
    Membre Expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Par défaut
    Au temps pour moi. Je n'ai pas été attentif à la partie avec awk.

    Citation Envoyé par sam.fet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ls FOLDER  > temp
    a=$(awk '{print $1}' temp)
    Cette syntaxe est vouée à l'échec, si tes noms de fichiers contiennent des blancs car $1 signifie : "le premier champ" et ce sont justement les blancs qui servent à séparer les champs.

    Il vaut mieux s'assurer que le ls ne sortira rien d'autre que les noms de fichiers, sur une seule colonne, et tout prendre globalement dans la variable (pas de $ à FOLDER ? C'est voulu ?)
    Par ailleurs, on évite la création d'un fichier temporaire qu'il aurait fallu détruire en fin de traitement et qui peut être à l'origine de conflit lorsque le script est lancé plusieurs fois simultanéement.

    Ca n'empêche pas les autres précautions que j'ai indiqué quant à l'usage ultérieur du nom de fichier.

  12. #12
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 106
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ls FOLDER  > temp
    a=$(awk '{print $1 " " $2}' temp)


    n oublie pas l espace avant $2.

    Cdt.

  13. #13
    Membre Expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Par défaut
    Citation Envoyé par insupien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ls FOLDER  > temp
    a=$(awk '{print $1 " " $2}' temp)


    n oublie pas l espace avant $2.
    Et comment fait on si le nom de fichier contient deux blancs ?

  14. #14
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 106
    Par défaut
    Citation Envoyé par 2Eurocents
    Et comment fait on si le nom de fichier contient deux blancs ?

    Je suis d'accord mais ces noms de fichiers ont l'air d'être bien formatés.
    Je présume qu'il n'y a pas lieu d'avoir plus d'un espace.

    Mais si c'est le cas c simple :

    une petite boucle de i = 1 à ARGC - 1 et le tour est joué ca donnera ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    awk '{
     
    for ( i = 1 ; i < ARGC -1 ; i++ ) {
                        print $i " "
    }
     
    print ${ARGC -1}
     
    }' temp
    C un peu tiré par les cheveux mais ca marche!

  15. #15
    Membre éclairé
    Profil pro
    Responsable test de charge
    Inscrit en
    Février 2006
    Messages
    186
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable test de charge

    Informations forums :
    Inscription : Février 2006
    Messages : 186
    Par défaut
    Merci à tous,

  16. #16
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 106
    Par défaut
    Citation Envoyé par sam.fet
    Merci à tous,

    Alors ta réussie à le faire?

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

Discussions similaires

  1. [Windows]lecture des fichier lnk (raccourcis)
    Par Tiaps dans le forum API standards et tierces
    Réponses: 10
    Dernier message: 21/10/2009, 20h27
  2. [jsp]lecture de fichier
    Par antigone dans le forum Servlets/JSP
    Réponses: 9
    Dernier message: 04/09/2003, 12h05
  3. [AS400][Intranet][PC] Lecture de "fichiers" AS400
    Par lando dans le forum Autres SGBD
    Réponses: 4
    Dernier message: 16/07/2003, 12h11
  4. Lecture de fichier
    Par Watcha dans le forum x86 16-bits
    Réponses: 13
    Dernier message: 04/03/2003, 21h43
  5. Lecture de fichiers ".WAV"...
    Par 0x4e84 dans le forum Langage
    Réponses: 2
    Dernier message: 03/09/2002, 10h43

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