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 :

Stocker le contenu d'un fichier texte dans un tableau


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 80
    Par défaut Stocker le contenu d'un fichier texte dans un tableau
    Bonsoir,

    Pourriez-vous m'aider à résoudre le problème suivant ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #!/bin/bash
     
    # Récupération / mise en forme de l'url du fichier à télécharger :
    urld[1]=`cat "/user/url.lst" | grep ^url1 | sed s/url1=// `
     
    # Affiche l'url pour vérifier le stockage correct dans le tableau (OK):
    echo i= 1 :  ${urld[1]}
     
    # Télécharge la page web (NOK).
    wget ${urld[1]}

    contenu de /user/url.lst
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    url1=<a href="http://www.monsite1.com.index.php%od/" target="_blank">www.monsite1.com.index.php</a>
    Bien que la page à télécharger soit correctement stockée dans le tableau, le téléchargement ne marche pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    http:// <a href="http://www.monsite1.com.index.php%od/" target="_blank">www.monsite1.com.index.php%OD</a>
    => index.php%0D
    Bad Request
    Il semble que ce %OD apparaisse au moment ou je lis et stocke le contenu du fichier externe.
    Pouvez-vous m'expliquer ce qui se passe, et me dire comment supprimer ce %OD ?

    Merci pour votre aide.

  2. #2
    Expert confirmé
    Avatar de Michaël
    Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2003
    Messages
    3 497
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2003
    Messages : 3 497
    Par défaut
    je crois que c'est à cause des caractères de retour qui sont pris quand tu récupères ton url de url.lst. tu dois avoir des caractères de retour microsoft et non des caractères unix.
    télécharges dos2unix et faiset relances ton script. comment tu génères ce fichier url.lst ?

    bref pour supprimer cela, tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wget $(sed 's/%OD//' ${urld[1]})
    c'est pas beau mais ça devrait marcher.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 80
    Par défaut
    Citation Envoyé par Michaël
    je crois que c'est à cause des caractères de retour qui sont pris quand tu récupères ton url de url.lst. tu dois avoir des
    aractères de retour microsoft et non des caractères unix.
    télécharges dos2unix et fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    os2unix /user/url.lst
    et relances ton script. comment tu génères ce fichier url.lst ?
    Bien vu ! Le fichier usr.lst est généré sur une machine Window, à partir de "notepad++",
    le pb vient de là. Je viens d'essayer avec un "usr.lst" créé sous Linux, tout fonctionne parfaitement. En revanche, la moulinette dos2unix ne corrige pas le pb du fichier sous Windows.

    De plus, bizarrement, après quelques modifications dans mon fichier usr.lst, je me retrouve plusieurs %OD concaténés en fin de ligne au lieu d'un seul ...

    Citation Envoyé par Michaël
    bref pour supprimer cela, tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wget $(sed 's/%OD//' ${urld[1]})
    c'est pas beau mais ça devrait marcher.
    Cette syntaxe ne marche pas, la console retourne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    aucun fichier ou répertoire de ce typete.fr/index.php
    wget url manquant
    Peut-on filtrer dès l'enregistrement dans le tableau ? J'ai essayé cette syntaxe mais elle ne marche pas. Ai-je loupé quelque chose ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    urld[1]=`cat "/user/url.lst" | grep ^url1 | sed s/url1=// | sed s/%0D//g `
    Help

  4. #4
    Membre très actif
    Avatar de vosaray
    Profil pro
    Architecte technique
    Inscrit en
    Mai 2004
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2004
    Messages : 217
    Par défaut
    Pour pruner les retour chariots windozines tu peux essayer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -pi.save -e 's/\r//g' /user/url.lst

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 80
    Par défaut
    Citation Envoyé par vosaray
    Pour pruner les retour chariots windozines tu peux essayer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -pi.save -e 's/\r//g' /user/url.lst
    Merci, mais pour ce projet, je n'ai pas la possibilité d'utiliser PERL.
    Je dois trouver une solution via le script bash.

  6. #6
    Membre émérite
    Avatar de Celelibi
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 087
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 087
    Par défaut
    la solution de Michaël devrait marcher, à ceci près que c'est wget qui transforme le \r en %0D, donc ce n'est pas %0D qu'il faut supprimer, mais \r.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    urld[1]=`cat "/user/url.lst" | grep ^url1 | sed s/url1=// | sed s/\r$//g

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

Discussions similaires

  1. stocker le contenu d'un fichier texte dans un tableau
    Par sneb5757 dans le forum Débuter
    Réponses: 12
    Dernier message: 24/10/2008, 21h11
  2. contenu d'un fichier texte dans un tableau
    Par lyoram dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 30/11/2006, 11h15
  3. Réponses: 4
    Dernier message: 15/08/2006, 17h40
  4. Réponses: 3
    Dernier message: 19/05/2006, 11h35
  5. [Tableaux] Stocker un fichier texte dans un tableau
    Par clairette59 dans le forum Langage
    Réponses: 13
    Dernier message: 27/01/2006, 23h48

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