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 :

Saut de ligne avec sed


Sujet :

Shell et commandes GNU

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2003
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 166
    Points : 39
    Points
    39
    Par défaut Saut de ligne avec sed
    Bonjour,

    j'ai un fichier qui contient deux points virgules qui se suivent.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    cat fic
     
    /*
    %tete
    */
     
    aeae:DEBC= ; %toto1;
    '/*'
     
     
    %tete2;
     
     
    si je rencontre un ; qui est suivi par du texte je doit sauter de ligne
     
     
    sed 's/;[^*]/`echo \n`/g' fic
     
     
     
    càd obtenir:
     
    aeae:DEBC= ; 
    %toto1;
    Merci de votre aide

  2. #2
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut
    Bonjour, quel est ton problème exactement ? Je pose la question car mon petit cerveau commence à faiblir

  3. #3
    Nouveau membre du Club
    Inscrit en
    Novembre 2003
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 166
    Points : 39
    Points
    39
    Par défaut Saut de ligne avec sed
    Citation Envoyé par Larkine
    Bonjour, quel est ton problème exactement ? Je pose la question car mon petit cerveau commence à faiblir
    si je rencontre un point virgule suivi d'un texte je dois sauter la ligne
    pour moi le point virgule est la fin de ligne.

    donc dans mon fichier j'ai deux lignes sur une seule ligne:
    aeaeEBC= ; %toto1;

    il faut que je fasse ça:

    aeaeEBC= ;
    %toto1;

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 106
    Points : 104
    Points
    104
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for ligne in `cat fic`
    do
       awk (avec ';' comme delim)
       tu prends tes $1 ... $n
     
    done
    un truc ds ce genre

  5. #5
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -r 's/(;)(.)/\1\n\2/g' fichier
    Cela devrait fonctionner.

  6. #6
    Nouveau membre du Club
    Inscrit en
    Novembre 2003
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 166
    Points : 39
    Points
    39
    Par défaut Saut de ligne avec sed
    Malhereusement non.



    Citation Envoyé par 2Eurocents
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -r 's/(;)(.)/\1\n\2/g' fichier
    Cela devrait fonctionner.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    sed -r 's/(;)(.)/\1\n\2/g' fichier
     
    sed: illegal option -- r
    Usage: sed [-n] [-e script] [-f source_file] [file...]
     
    je suis sous unix HP-UX

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 106
    Points : 104
    Points
    104
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for ligne in `cat fichier | tr -s ";" "\n"`
    do
    echo $ligne ";"
    done
    je suis sous HP unix est ca marche.

  8. #8
    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
    Citation Envoyé par melmouj
    je suis sous unix HP-UX
    Argh ... je n'ai pas de HP-UX pour essayer.
    Il est vrai que l'option de commande -r est une option spécifique GNU.

    Essayons de faire sans ...

    Peux-tu essayer ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed 's/;\b/;\n/g' fichier
    Je ne sais pas si le sed HP-UX reconnait le motif "magique" \b ... Ce motif matche avec n'importe quelle portion de mot, sans toutefois la mémoriser, ce qui la rend disponible pour un usage ultérieur.

  9. #9
    Nouveau membre du Club
    Inscrit en
    Novembre 2003
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 166
    Points : 39
    Points
    39
    Par défaut sed saut de ligne
    ça ne marche pas


    Citation Envoyé par 2Eurocents
    Argh ... je n'ai pas de HP-UX pour essayer.
    Il est vrai que l'option de commande -r est une option spécifique GNU.

    Essayons de faire sans ...

    Peux-tu essayer ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed 's/;\b/;\n/g' fichier
    Je ne sais pas si le sed HP-UX reconnait le motif "magique" \b ... Ce motif matche avec n'importe quelle portion de mot, sans toutefois la mémoriser, ce qui la rend disponible pour un usage ultérieur.

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 23
    Points : 23
    Points
    23
    Par défaut
    Dans un fichier, remplace les ';' suivit d'au moins 1 caractère par des sauts de ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed "s/;\(.\+\)/;\n\1/g" -i fichier
    ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ echo "ceci est un test ; he oui" | sed "s/;\(.\+\)/;\n\1/g"
    ceci est un test ;
     he oui

  11. #11
    Membre actif
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2007
    Messages : 248
    Points : 289
    Points
    289
    Par défaut
    Citation Envoyé par dagos Voir le message
    Dans un fichier, remplace les ';' suivit d'au moins 1 caractère par des sauts de ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed "s/;\(.\+\)/;\n\1/g" -i fichier
    ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ echo "ceci est un test ; he oui" | sed "s/;\(.\+\)/;\n\1/g"
    ceci est un test ;
     he oui
    Ca marche pas sous HP-UX

  12. #12
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 584
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 584
    Points : 19 461
    Points
    19 461
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    echo "/*
    %tete
    */
    
    aeae:DEBC= ; %toto1;
    '/*'
    
    
    %tete2;" | sed --posix 's/;./\n/g'
    /*
    %tete
    */
    
    aeae:DEBC= 
    %toto1;
    '/*'
    
    
    %tete2;
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    echo "/*
    %tete
    */
    
    aeae:DEBC= ; %toto1;
    '/*'
    
    
    %tete2;" | sed --posix 's/;./\
     /g'
    /*
    %tete
    */
    
    aeae:DEBC= 
    %toto1;
    '/*'
    
    
    %tete2;
    ...
    ?

    l'option --posix n'est là que pour tester l'expression utilisée.

  13. #13
    Membre actif
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2007
    Messages : 248
    Points : 289
    Points
    289
    Par défaut
    marche pas non plus:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ echo "w1;w2;" | sed --posix 's/;./\n/g'
    sed: illegal option -- -
    Usage: sed [-n] [-e script] [-f source_file] [file...]

  14. #14
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 584
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 584
    Points : 19 461
    Points
    19 461
    Par défaut
    l'option --posix n'est là que pour tester l'expression utilisée.
    étant sous-entendu, qu'il ne faut l'utiliser qu'avec GNU/sed
    (elle n'a pas de raison d'être pour POSIX/sed)

  15. #15
    Membre actif
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2007
    Messages : 248
    Points : 289
    Points
    289
    Par défaut
    excuse moi j'avais pas compris

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. Pb saut de ligne avec <form></form>
    Par JSuper_Kitten dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 22/10/2005, 16h02
  3. [FLASH MX] PB de saut de ligne avec XML
    Par yoda_style dans le forum Flash
    Réponses: 2
    Dernier message: 07/04/2005, 11h16
  4. le caractere de saut de ligne avec SetDlgItemText
    Par matthieup dans le forum Windows
    Réponses: 4
    Dernier message: 07/11/2004, 18h31
  5. Extraire une valeur d'une ligne avec sed
    Par jojolepabo dans le forum Linux
    Réponses: 6
    Dernier message: 27/10/2004, 09h34

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