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 POSIX Discussion :

[Sed] remplacement d'un # par \ -> fichier vide :? [Solaris]


Sujet :

Shell et commandes POSIX

  1. #1
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    500
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2007
    Messages : 500
    Points : 238
    Points
    238
    Par défaut [Sed] remplacement d'un # par \ -> fichier vide :?
    Hello,

    dans mon script, j'ai la commande suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed "s%#%\/%g" ${entree} > ${entree}_tmp
    Qui doit, dans un fichier xml de ce type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <bal ... chemin="#." ... />
    Remplacer le dièse par un backslash.

    Pourtant, mon fichier en sortie est ... vide.

    Je m'arrache les cheveux sur cette commande, là je vois pas d'où ça peut venir.

    Quelqu'un aurait une idée?
    L'intelligence c'est comme la confiture, moins tu en as , plus tu l'étales...

  2. #2
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Salut,

    D'une part utiliser des quotes simples et puis penser à protéger le backslash

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ echo '<bal ... chemin="#." ... />' | sed 's%#%\\%'
    <bal ... chemin="\." ... />
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  3. #3
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    500
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2007
    Messages : 500
    Points : 238
    Points
    238
    Par défaut
    Hello,

    pour être sûr que ça ne vienne pas du #, j'ai maintenant dans mon xml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <bal ... chemin="####." ... />
    Les #### qu'il faut remplacer par un /

    Avec :
    Toujours pareil, fichier vide en sortie :/
    L'intelligence c'est comme la confiture, moins tu en as , plus tu l'étales...

  4. #4
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    500
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2007
    Messages : 500
    Points : 238
    Points
    238
    Par défaut
    Je sais pas si c'est lié, mais le serveur est sous SOLARIS.

    La même commande testée sur le même fichier en local sur cygwin fonctionne bien.
    L'intelligence c'est comme la confiture, moins tu en as , plus tu l'étales...

  5. #5
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Oups désolé, j'ai confondu backslah et antislash

    Sinon, perso je n'ai toujours pas de problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ echo '<bal ... chemin="#####." ... />' | sed "s%#\+%/%"
    <bal ... chemin="/." ... />
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  6. #6
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    500
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2007
    Messages : 500
    Points : 238
    Points
    238
    Par défaut
    Je viens de remarque que si mon xml en entrée a son contenu sur une seule ligne ( non formatté) , niet, fichier en sortie vide.

    Par contre si mon xml est formatté ( plusieurs lignes ), ça fonctionne


    Solution de contournement trouvée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo `cat ${xml}` | sed 's%####%/%g' > ${xml}_tmp

    Bizarre, moche, mais seule solution là :o
    L'intelligence c'est comme la confiture, moins tu en as , plus tu l'étales...

  7. #7
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 266
    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 266
    Points : 12 681
    Points
    12 681
    Par défaut
    Bonjour,
    Tu es peut-être dans ce cas là (extrait man sed solaris):
    The sed utility is a text editor. It cannot edit binary
    files or files containing ASCII NUL (\0) characters or very
    long lines.
    Pourrais-tu voir ce que la commande suivante te retourne:
    Avec ${xml} la variable qui contient le nom du fichier bien sur.
    Cordialement.

  8. #8
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    500
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2007
    Messages : 500
    Points : 238
    Points
    238
    Par défaut
    mon fichier est donc un :

    Après mon xml est pas super super long, sur une ligne mon fichier test fait 6741 caractères.
    L'intelligence c'est comme la confiture, moins tu en as , plus tu l'étales...

  9. #9
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 266
    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 266
    Points : 12 681
    Points
    12 681
    Par défaut
    La taille effectivement, n'est pas énorme mais cela peut suffire.
    As-tu essayé avec la version posix de sed qui se trouve dans /usr/xpg4/bin/ sur solaris ?
    sinon, tu as la possibilité de faire la même chose depuis perl (si je reprend ton premier post):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -p -e 's%#%/%g' ${entree} > ${entree}_tmp
    Tu as même une option -i qui permet de modifier directement le fichier.
    Cordialement.

  10. #10
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    500
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2007
    Messages : 500
    Points : 238
    Points
    238
    Par défaut
    Ok merci bien.


    EDIT:
    avec le sed POSIX => KO
    avec perl => OK , je vais donc partir là dessus
    L'intelligence c'est comme la confiture, moins tu en as , plus tu l'étales...

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

Discussions similaires

  1. firefox 4 - Remplacer l'icone par un fichier PNG
    Par byloute dans le forum Firefox
    Réponses: 7
    Dernier message: 10/06/2012, 08h47
  2. Sed : Remplacement de chaines par d'autres avec des caractères spéciaux
    Par argoet dans le forum Applications et environnements graphiques
    Réponses: 4
    Dernier message: 28/09/2011, 13h50
  3. remplacer un pattern par un fichier php
    Par totof49 dans le forum Langage
    Réponses: 7
    Dernier message: 12/01/2009, 19h52
  4. [POO] Remplacement de texte par un fichier
    Par poussinphp dans le forum Langage
    Réponses: 2
    Dernier message: 08/05/2008, 16h48
  5. Réponses: 2
    Dernier message: 03/04/2008, 17h05

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