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 :

Bash CGI problème retour chariot


Sujet :

Linux

  1. #1
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut Bash CGI problème retour chariot
    bonjour,

    j'ai un souci que je ne comprends pas, j'ai crée un script CGI qui récupère dans l'url le contenu d'un textarea contenant des retour-chariot, qui l'inscrit dans un fichier
    exemple de contenu du fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    un%0D%0Aexemple%0D%0Asimple
    lorsque je veux afficher le contenu de ce fichier dans un autre textarea, j'utilise sed pour convertir les retour-chariot
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    echo "<textarea cols='60' rows='10'>"
    sed "s/%0D%0A/\n/g" .monfichier
    echo "</textarea>"
    mais quand j'affiche la page il n'interprète pas les "\n", en fait j'obtiens :
    unnexemplensimple
    ce test fonctionne parfaitement sur ma machine local, mais pas sur mon serveur dédié (ovh). J'utilise bash "/bin/sh"

    j'ai déjà essayé de travailler ce fichier avec awk car je me suis dit, peut-être sed ne veut pas... mais pareil, on dirait que l'échappement est retiré systématiquement, pareil aussi en combinant des printf, des littéraux...

    j'ai beau cherché sur le web, je ne vois rien pouvant expliquer ce dysfonctionnement

    merci de votre aide

  2. #2
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Points : 5 915
    Points
    5 915
    Par défaut
    echo -e ...

  3. #3
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    arf, merci becket, j'aurais bien voulu que cela ne soit que ça...

    si je met :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo -e `sed "s/%0D%0A/\n/g" .monfichier`
    ça marche pas non plus... j'ai toujours la même chose
    unnexemplensimple
    la commande echo n'est a priori pas en cause car
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo -e "un\nexemple\nsimple"
    me donne bien le résultat voulu...

    si je lis le manuel de sed, je trouve cette section :
    This version of sed supports a \<newline> sequence in all
    regular expressions, the replacement part of a substitute
    (s) command, and in the source and dest parts of a
    transliterate (y) command. The \ is stripped, and the
    newline is kept
    donc ça devrait fonctionner.

    La version de sed sur le serveur est 3.02

  4. #4
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Points : 4 029
    Points
    4 029
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    etienne@info1:~ $ echo "abc" | sed 's/bc/\
    > bc/g'
    a
    bc
    Il faut vraiment aller à la ligne et non pas utiliser \n
    Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux

  5. #5
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    merci à vous deux

    il fallait effectivement faire un saut de ligne et remplacer les double-quotes par des simples.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    echo "<textarea cols='60' rows='25'>"
    sed 's/%0D%0A/\
    /g' .monfichier
    echo "</textarea>"
    je me coucherai moins *** ce soir

    juste pour l'info, ce saut de ligne "en réel" est-il ce qui est expliqué dans la section du manuel cité plus haut ? j'ai cru comprendre pourtant que les code posix "\n" était pris en compte dans les expressions régulières et que sed parsait celle-ci pour mettre à la place un retour chariot... m'enfin, le principal est que cela fonctionne

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

Discussions similaires

  1. insérer un retour chariot à intervalle régulier en bash ou awk
    Par mamax49 dans le forum Langages de programmation
    Réponses: 0
    Dernier message: 11/09/2014, 09h35
  2. [bash] Construire une variable texte avec retours chariot
    Par vallica dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 21/03/2008, 12h46
  3. afficher texte avec retour chariot aprèq requète sql
    Par frenchy371 dans le forum Requêtes
    Réponses: 2
    Dernier message: 07/01/2004, 17h33
  4. retour chariot dans un string
    Par bono dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 29/12/2003, 12h17
  5. Retour chariot dans un TMemo ?
    Par Vincent PETIT dans le forum C++Builder
    Réponses: 7
    Dernier message: 27/08/2002, 18h55

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