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 :

afficher texte inversé ?


Sujet :

Shell et commandes POSIX

  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur Systèmes
    Inscrit en
    Août 2011
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Monaco

    Informations professionnelles :
    Activité : Ingénieur Systèmes
    Secteur : Finance

    Informations forums :
    Inscription : Août 2011
    Messages : 75
    Par défaut afficher texte inversé ?
    bonjour,

    j'aimerais trouver une solution (avec grep, sed, awk, etc.. peu importe l'outil) pour pouvoir afficher des patterns du type :

    aaa_bbb_ccc_ddd_eee
    toto_maurice_c_dd_e
    aa_b_c
    a_b

    à l'envers dans l'ordre décroissant, par exemple pour reprendre l'exemple ci-dessus : (je ne veux inverser que les mots, pas les caractères)

    eee_ddd_ccc_bbb_aaa
    e_dd_c_maurice_toto
    c_b_aa
    b_a

    j'imagine que cela est tout simple en awk par exemple, mais je ne sais pas du tout comment traiter ça

    le séparateur de fichier est toujours "_", le seul hic c'est qu'il peut y avoir entre 2 et n champs (pas de champs fixes, donc je vois pas comment quantifier mon truc).

    dans le pire des cas j'ai pensé à faire une fonction qui compte le nombre de champs trouvés, et qui les print depuis le dernier.. mais il y a peut-être une fonction plus simple ?

    merci de votre aide

  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,

    Avec "rev" tout simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $ cat plop 
    aaa_bbb_ccc_ddd_eee
    toto_maurice_c_dd_e
    aa_b_c
    a_b
     
    $ rev plop 
    eee_ddd_ccc_bbb_aaa
    e_dd_c_eciruam_otot
    c_b_aa
    b_a
     
    $

  3. #3
    Membre confirmé
    Homme Profil pro
    Ingénieur Systèmes
    Inscrit en
    Août 2011
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Monaco

    Informations professionnelles :
    Activité : Ingénieur Systèmes
    Secteur : Finance

    Informations forums :
    Inscription : Août 2011
    Messages : 75
    Par défaut
    bon j'ai résolu mon problème tout seul merci quand même

    c'est peut-être sale mais bon..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    echo un_deux_trois | nawk -F_ '{ for (a=NF; a>=1; a--) {
                                            if (a==1) {
                                                    print $a
                                                    } else {
                                                    printf $a "_"
                                                    }
                                            }
                                       printf "\n"
                                     }'
    m'affiche bien trois_deux_un

    PS: merci zipe31, je ne connaissait pas rev, mais je ne l'ai pas à dispo sur ma box solaris

  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
    Il y a aussi un exemple avec sed dans "info sed"

    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
         #!/usr/bin/sed -f
     
         /../! b
     
         # Reverse a line.  Begin embedding the line between two newlines
         s/^.*$/\
         &\
         /
     
         # Move first character at the end.  The regexp matches until
         # there are zero or one characters between the markers
         tx
         :x
         s/\(\n.\)\(.*\)\(.\n\)/\3\2\1/
         tx
     
         # Remove the newline markers
         s/\n//g

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

Discussions similaires

  1. [JTabbedPane] afficher texte étiquette bas en haut.
    Par spoutyoyo dans le forum Agents de placement/Fenêtres
    Réponses: 11
    Dernier message: 07/07/2009, 17h46
  2. [HTMLEditorKit] afficher texte html dans excel
    Par Invité dans le forum Composants
    Réponses: 1
    Dernier message: 23/08/2005, 10h43
  3. Afficher texte
    Par mune dans le forum MFC
    Réponses: 1
    Dernier message: 19/05/2005, 00h56
  4. [JButton] Afficher texte en survolant bouton.
    Par Galima dans le forum Composants
    Réponses: 2
    Dernier message: 04/06/2004, 22h21
  5. afficher texte avec retour chariot aprèq requète sql
    Par frenchy371 dans le forum Requêtes
    Réponses: 2
    Dernier message: 07/01/2004, 17h33

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