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 :

awk et les retours chariot


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut awk et les retours chariot
    Bonjour,

    J'essaie de remplacer les retour windows par "<br />" et d'enlever les retour chariot unix entre deux "
    J'ai l'impression qu'on peut remplacer les retours chariot avec awk qu'en les mettant dans RS

    Voici un fichier de test qui est un bon exemple.
    Le \n et \r\n sont respectivement les retours chariot unix et windows.
    texte1 est un commentaire présent qu'au début du fichier. Les lignes suivantes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    texte1\n
    1  "texte2"\n
    2  "\n
    texte3   \n
    \r\n
    \r\n
    \n
    texte4\n
    \r\n
    texte5\n
    \r\n
    "\n
    Voici ce que je souhaite obtenir:
    texte1
    1 "texte2"
    2 "texte3 <br /><br />texte4<br />texte5<br />"
    Pour le moment j'utilise ça:
    awk '
    BEGIN {
    BINMODE=1
    RS="\r\n"
    ORS="<br />"
    }
    {
    print $0
    }
    ' test.txt | awk '
    BEGIN {
    BINMODE=1
    RS="\n"
    ORS=""
    }
    {
    print $0
    }
    ' > sortie.txt
    Et j’obtiens ça:
    texte11 "texte2"2 "texte3 <br /><br />texte4<br />texte5<br />"<br />
    J'avais pensé à quelque chose comme un FS=" pour améliorer ça mais je n'y arrive pas.
    Une idée pour améliorer tout ça? Désolé, je débute avec awk mais il sera toujours plus simple à utiliser que sed pour les retours chariot

  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,
    Citation Envoyé par Beginner.j Voir le message
    mais il sera toujours plus simple à utiliser que sed pour les retours chariot
    A tout hasard...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $ cat -A plop
    texte1$
    1  "texte2"$
    2  "$
    texte3   $
    ^M$
    ^M$
    $
    texte4$
    ^M$
    texte5$
    ^M$
    "$
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ sed '/ "$/{:z;N;/"$/! bz;s#\r#<br />#g;s#\n##g}' plop | cat -A
    texte1$
    1  "texte2"$
    2  "texte3   <br /><br />texte4<br />texte5<br />"$

  3. #3
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 103
    Par défaut
    Citation Envoyé par zipe31 Voir le message
    Salut,

    Citation Envoyé par Beginner.j Voir le message
    mais il sera toujours plus simple à utiliser que sed pour les retours chariot
    A tout hasard...

    On dirait qu'y en a qui ont du mal à résister à la provocation!!!

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par zipe31 Voir le message
    Salut,


    A tout hasard...
    Je n'ai rien dit

    Bon, faut que je regarde un peu plus en détail mon fichier. Ca ne marche pas partout et je n'arrive même pas à voir les différences pour le moment. >_<
    En tout cas, c'est pas mal du tout. Je devrait pourvoir faire ce que je veux avec ça.
    Merci

    J'ai l'impression qu'on peut remplacer les retours chariot avec awk qu'en les mettant dans RS
    Sinon je peux avoir confirmation sur ce point?

    Et j'ai une autre question cette fois sur sed.
    J'ai l'impression quand passant une simple commande sed ça supprime le \r, c'est bien le cas? Existe-t-il une option pour que cela ne se produise pas?

  5. #5
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 362
    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 362
    Par défaut
    Bonjour,

    Pour répondre a ta question sur les retours chariot en awk, tu peux utiliser printf qui est l'équivalent du printf en c au lieu de print.

    Pour la question sed, c'est la partie suivante du code sed donné qui supprime le \r:
    Cordialement.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par disedorgue Voir le message
    Bonjour,

    Pour répondre a ta question sur les retours chariot en awk, tu peux utiliser printf qui est l'équivalent du printf en c au lieu de print.

    Pour la question sed, c'est la partie suivante du code sed donné qui supprime le \r:
    Cordialement.
    Ce n'était pas ma question sur sed

    J'ai l'impression quand passant une simple commande sed ça supprime le \r, c'est bien le cas? Existe-t-il une option pour que cela ne se produise pas?
    Sur cygwin un simple sed comme celui-ci supprime les espace et en plus les \r. Je me demandais si c'est lié à sed (une option manquante) ou si c'est lié à cygwin.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i 's/ //g' fichier

  7. #7
    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
    Citation Envoyé par Beginner.j Voir le message
    Je me demandais si c'est lié à sed (une option manquante) ou si c'est lié à cygwin.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i 's/ //g' fichier
    Ce doit être lié à cygwin :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $ cat -A plop 
    blabla ^M $
    ^M ^M$
    bla bla^M bla bla$
     $
    Blabla$
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $ sed -i 's/ //g' plop 
     
    $ cat -A plop 
    blabla^M$
    ^M^M$
    blabla^Mblabla$
    $
    Blabla$

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

Discussions similaires

  1. Réponses: 15
    Dernier message: 08/05/2006, 22h32
  2. Encoder les retours chariots comme sous Unix
    Par tsing dans le forum Langage
    Réponses: 5
    Dernier message: 07/03/2006, 19h48
  3. Réponses: 1
    Dernier message: 11/01/2006, 11h58
  4. Réponses: 2
    Dernier message: 29/11/2005, 14h17
  5. Souci pour remplacer les Retours chariot par <BR>
    Par ahage4x4 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 01/06/2005, 11h24

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