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 :

sed et sauts de ligne


Sujet :

Shell et commandes GNU

Vue hybride

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 119
    Par défaut sed et sauts de ligne
    Bonjour,

    J'ai une commande sed qui vise à remplacer des sauts de lignes par des balises <br> et certains sauts de lignes résistent. La commande ne doit pas être mauvaises puisque tous ne résistent pas...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    [mer. 02 mai (~) user] cat temp
    <p>Est nulle toute clause d'une convention ou d'un accord collectif de travail ou d'un contrat de travail qui réserve le bénéfice d'une mesure quelconque, à un ou des salariés, en considération du sexe.</p>
    <p>Toutefois, ces dispositions ne sont pas applicables lorsque cette clause a pour objet l'application des dispositions relatives&nbsp;:</p>
    <p>1° A la protection de la grossesse et de la maternité, prévues aux articles L.&nbsp;1225-1 à L.&nbsp;1225-28&nbsp;;</p>
    <p>2° A l'interdiction d'emploi prénatal et postnatal, prévues à l'article L.&nbsp;1225-29&nbsp;;</p> 
    <p>3° A l'allaitement, prévues aux articles L.&nbsp;1225-30 à L.&nbsp;1225-33&nbsp;;</p>
    <p>4° A la démission de la salariée en état de grossesse médicalement constaté, prévues à l'article L.&nbsp;1225-34&nbsp;;</p>
    <p>5° Au congé de paternité, prévues aux articles L.&nbsp;1225-35 et L.&nbsp;1225-36&nbsp;;</p> 
    <p>6° Au congé d'adoption, prévues aux articles L.&nbsp;1225-37 à L.&nbsp;1225-45.</p>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    [mer. 02 mai (~) user] sed -e :a -e '$!N; s/<\/p>\n<p>\([0-9]\{1,2\}°\)/<br>  \1/;ta' -e 'P;D' temp
    <p>Est nulle toute clause d'une convention ou d'un accord collectif de travail ou d'un contrat de travail qui réserve le bénéfice d'une mesure quelconque, à un ou des salariés, en considération du sexe.</p>
    <p>Toutefois, ces dispositions ne sont pas applicables lorsque cette clause a pour objet l'application des dispositions relatives&nbsp;:<br>  1° A la protection de la grossesse et de la maternité, prévues aux articles L.&nbsp;1225-1 à L.&nbsp;1225-28&nbsp;;<br>  2° A l'interdiction d'emploi prénatal et postnatal, prévues à l'article L.&nbsp;1225-29&nbsp;;</p> 
    <p>3° A l'allaitement, prévues aux articles L.&nbsp;1225-30 à L.&nbsp;1225-33&nbsp;;<br>  4° A la démission de la salariée en état de grossesse médicalement constaté, prévues à l'article L.&nbsp;1225-34&nbsp;;<br>  5° Au congé de paternité, prévues aux articles L.&nbsp;1225-35 et L.&nbsp;1225-36&nbsp;;</p> 
    <p>6° Au congé d'adoption, prévues aux articles L.&nbsp;1225-37 à L.&nbsp;1225-45.</p>
    Le saut de ligne entre le 2° et le 3° et celui entre le 5° et le 6° font de la résistance. J'ai essayé de faire un dos2unix sans succès. Si je fais un cat -A, ça me donne ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    [mer. 02 mai (~) user] cat -A temp
    <p>Est nulle toute clause d'une convention ou d'un accord collectif de travail ou d'un contrat de travail qui rM-CM-)serve le bM-CM-)nM-CM-)fice d'une mesure quelconque, M-CM-  un ou des salariM-CM-)s, en considM-CM-)ration du sexe.</p>$
    <p>Toutefois, ces dispositions ne sont pas applicables lorsque cette clause a pour objet l'application des dispositions relatives&nbsp;:</p>$
    <p>1M-BM-0 A la protection de la grossesse et de la maternitM-CM-), prM-CM-)vues aux articles L.&nbsp;1225-1 M-CM-  L.&nbsp;1225-28&nbsp;;</p>$
    <p>2M-BM-0 A l'interdiction d'emploi prM-CM-)natal et postnatal, prM-CM-)vues M-CM-  l'article L.&nbsp;1225-29&nbsp;;</p> $
    <p>3M-BM-0 A l'allaitement, prM-CM-)vues aux articles L.&nbsp;1225-30 M-CM-  L.&nbsp;1225-33&nbsp;;</p>$
    <p>4M-BM-0 A la dM-CM-)mission de la salariM-CM-)e en M-CM-)tat de grossesse mM-CM-)dicalement constatM-CM-), prM-CM-)vues M-CM-  l'article L.&nbsp;1225-34&nbsp;;</p>$
    <p>5M-BM-0 Au congM-CM-) de paternitM-CM-), prM-CM-)vues aux articles L.&nbsp;1225-35 et L.&nbsp;1225-36&nbsp;;</p> $
    <p>6M-BM-0 Au congM-CM-) d'adoption, prM-CM-)vues aux articles L.&nbsp;1225-37 M-CM-  L.&nbsp;1225-45.</p> $
    Cela affiche un espace juste avant le $. Comment le traiter avec sed ?

    Cordialement,

  2. #2
    Expert confirmé

    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
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed ':z;N;$! bz;s#\n#<br> #g'

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 119
    Par défaut
    merci, mais ça n'est pas encore tout à fait cela. Ma commande visait à remplacer les sauts de ligne uniquement quand ils précédaient une ligne qui commence par un chiffre suivi du caractère ° (1° ou 2° ou 3°...)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -e :a -e '$!N; s/<\/p>\n<p>\([0-9]\{1,2\}°\)/<br>  \1/;ta' -e 'P;D' temp
    Je m'en suis sorti en adaptant ta proposition comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed ':z;N;$! bz;s#\n<p>\([0-9]\{1,2\}°\)#<br> \1#g' temp > temp2
    Malheureusement, cela m'oblige à prévoir une ligne supplémentaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed "s#<\/p> \{0,3\}<br>#<br>#g" temp2 > temp3
    Pour supprimer les "</p><br>" ou "</p> <br>" qui demeurent.

    J'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed ':z;N;$! bz;s#\<p/>n<p>\([0-9]\{1,2\}°\)#<br> \1#g' temp > temp2
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed ':z;N;$! bz;s#\<p\/>n<p>\([0-9]\{1,2\}°\)#<br> \1#g' temp > temp2
    , mais ça ne marche pas du tout...
    Merci encore.

  4. #4
    Expert confirmé

    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
    Par défaut
    Désolé mais je ne comprends plus rien

    Quel est le résultat final attendu ???

  5. #5
    Expert confirmé

    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
    Par défaut
    Je crois que j'ai compris (en réduisant la longueur des lignes pour y voir mieux ).

    Essayes ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $ cat bar 
    <p>Est nulle toute clause en considération du sexe.</p>
    <p>Toutefois, ces dispositions ne sont pas applicables:</p>
    <p>1° A la protection de la grossesse et de la maternité;;</p>
    <p>2° A l'interdiction d'emploi prénatal et postnatal;;</p> 
    <p>3° A l'allaitement, prévues aux articles;;</p>
    <p>4° A la démission de la salariée ;;</p>
    <p>5° Au congé de paternité;;</p> 
    <p>6° Au congé d'adoption.</p>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $ sed ':z;N;$! bz;s#</p> *\n<p>\([0-9]\{1,2\}°\)#<br> \1#g' bar 
    <p>Est nulle toute clause en considération du sexe.</p>
    <p>Toutefois, ces dispositions ne sont pas applicables:<br> 1° A la protection de la grossesse et de la maternité;;<br> 2° A l'interdiction d'emploi prénatal et postnatal;;<br> 3° A l'allaitement, prévues aux articles;;<br> 4° A la démission de la salariée ;;<br> 5° Au congé de paternité;;<br> 6° Au congé d'adoption.</p>
     
    $

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 119
    Par défaut
    C'est exactement ça ! merci.
    Mais alors pourquoi ma commande initiale fonctionnait-elle avec certains retours à la ligne et pas tous ?

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

Discussions similaires

  1. supprimer des sauts de lignes avec sed (ou autre chose)
    Par laloupiote dans le forum Shell et commandes GNU
    Réponses: 7
    Dernier message: 26/02/2010, 10h12
  2. Saut de ligne avec sed
    Par melmouj dans le forum Shell et commandes GNU
    Réponses: 14
    Dernier message: 11/12/2009, 14h03
  3. Ajout de saut de ligne "/n" via sed
    Par tibal dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 22/06/2009, 21h22
  4. sed : supprimer saut de ligne
    Par michaeljeru dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 12/09/2008, 16h52
  5. [sed]Suppression de saut de ligne dans certains cas
    Par Anthony.Desvernois dans le forum Linux
    Réponses: 11
    Dernier message: 09/07/2007, 11h33

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