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 :

Problème avec un sed


Sujet :

Shell et commandes GNU

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 135
    Points : 46
    Points
    46
    Par défaut Problème avec un sed
    Bonjour,

    Je voudrais un insérer un retour chariot apres chaque balise fermante dans fichier.

    En fait dans mon fichier XML tous les tags sont sur une seul ligne c'est pour cela que je voudrais faire un script qui puisse insérer un retour a la ligne apres chaque caractere ><.

    Exemple de fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <?xml version='1.0' encoding='ISO-8859-1' ?><!DOCTYPE Batch ><!--PASREL--><Batch><Document></Document></Batch>
    Voici la commande que j'ai fait moi même que j'ai testé sur cygwin et qui marchait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cat ./DEBUT/$fichier | sed s/"><"/'\>\n\<'/g > ./DEBUT/${fichier}_tmp
    La je le teste sous une machine AIX avec ksh comme shell, et au lieu de d'inserer un retour chariot, il me genere un fichier vide.

    J'ai essayé de mettre \ avant chaque balise mais rien a faire.

    Comme je suis a cours d'idée, je sollicite votre aide.

    Quelqu'un a-t-il une idée ?

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    Comme ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cat ./DEBUT/$fichier | sed s/\>\</\>\\n\</g
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 135
    Points : 46
    Points
    46
    Par défaut
    ca ne marche pas non plus ca m'a effacé mon fichier

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    1. Il m'étonne que la commande que je t'ai passé efface ton fichier : elle ne fait que le lire et afficher son résultat à l'écran !
    2. Peux-tu être un peu plus explicite sur le "ça ne marche pas" ? On peut dire, tout aussi péremptoirement que "cela fonctionne" (au moins chez moi, ainsi que chez X ou Y ).


    Il y a certainement des différences de fonctionnement dues au système : ma commande est testée avec le sed GNU, tout comme toi dans cygwin. Le sed AIX a peut-être un comportement différent (le sed IRIX en a un : il lui faut une substitution par \\\\n pour qu'il affiche un \n qui ne sera même pas interprété).
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

  5. #5
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Octobre 2006
    Messages : 14
    Points : 16
    Points
    16
    Par défaut
    Ceci marche sur MacOSX 10.4.7 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cat ./DEBUT/$fichier | sed 's/></>\#</g' | tr ">\#<" ">\n<"
    J'utilise le # comme caractère à remplacer par tr mais on peut mettre ce qu'on veut à la place.

  6. #6
    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
    Quand je veux insérer un retour à la ligne avec sed, je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo "azazaz" | sed 's/z/\
    /g'
    et ça me donne
    a
    a
    a
    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

Discussions similaires

  1. premiers pas avec commande sed
    Par ghostrider95 dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 06/02/2011, 17h44
  2. Formatage fichiers texte avec Gnu-sed
    Par archivage-services dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 05/02/2010, 13h10
  3. [subversion/trac] Probl. de permission avec authz dans svnserve.conf
    Par mcdeffice dans le forum Administration système
    Réponses: 0
    Dernier message: 23/07/2009, 16h21
  4. Problème avec utilitaire sed
    Par carlou135 dans le forum Linux
    Réponses: 13
    Dernier message: 22/11/2007, 18h58
  5. decoupage avec awk + sed
    Par killapig dans le forum Shell et commandes GNU
    Réponses: 8
    Dernier message: 12/04/2007, 10h40

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