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 :

Inverser une liste de mot


Sujet :

Shell et commandes GNU

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2018
    Messages : 9
    Points : 6
    Points
    6
    Par défaut Inverser une liste de mot
    Salut,
    Dans mon script, j'ai une variable var1=toto/tata/titi. Et je voudrais avoir une variable var2= titi tata toto. J'arrive à enlever les '/' en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var2=`echo $var1 | tr '/' ' '`
    Mais je n'arrive pas inverser les mots.
    Merci d'avance

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 108
    Points : 28 416
    Points
    28 416
    Par défaut
    Tu peux faire comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var2=$(echo "$var1" | tr '/' ' \n' | tac | xargs)
    Mais c'est un peu un marteau pilon pour écraser une mouche...

  3. #3
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 271
    Points : 13 536
    Points
    13 536
    Par défaut
    Bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ var=toto/tata/titi
    $ sed 's@\(.*\)/\(.*\)/\(.*\)@\3 \2 \1@' <<<"$var"
    titi tata toto

  4. #4
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 309
    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 309
    Points : 12 817
    Points
    12 817
    Par défaut
    Bonjour, une version built-in:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ var1=toto/tata/titi
    $ var2="" ; for i in ${var1//\// } ; do var2="$i $var2" ; done
    $ echo $var2
    titi tata toto
    Ou si on ne veut inverser que sur le '/':
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var2=$(IFS='/';for i in $var1 ; do x="$i $x" ; done; echo $x)

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2018
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Merci à tous pous vos réponse !
    Finalement c'est la solution de @al1_24 qui répond le mieux à ma problématique. @Flodelarab ta solution marche aussi mais je voulais quelque chose de plus général car il peut y avoir plus que 3 élements (désolé je n'avais pas précisé).
    Ta solution marche aussi @disedorgue

  6. #6
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 108
    Points : 28 416
    Points
    28 416
    Par défaut
    La solution de @disedorgue me semble pourtant beaucoup plus élégante... surtout la deuxième version

  7. #7
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 271
    Points : 13 536
    Points
    13 536
    Par défaut
    Et une autre version:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ awk -F'/' '{a=$3;$3=$1;$1=a;} 1' <<<"$var"                                                                                                                                                                                                                                                        
    titi tata toto

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2010
    Messages
    345
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 345
    Points : 539
    Points
    539
    Par défaut
    Avec sed
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var='toto/tata/titi/hello/bonjour/test';sed -E ':A;s/((.*\n)*)(.*)(\/)(.*)$/\2\5\n\3/;tA;y/\n/ /'<<<"$var"

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

Discussions similaires

  1. [Débutant] Inverser une liste
    Par guillaume07 dans le forum Prolog
    Réponses: 7
    Dernier message: 17/05/2009, 19h02
  2. Réponses: 6
    Dernier message: 16/05/2006, 16h17
  3. Charger une liste de mots
    Par barth69 dans le forum C++Builder
    Réponses: 13
    Dernier message: 08/04/2006, 20h56
  4. [Regex][Avis] Méthode de suppression d'une liste de mots
    Par manal dans le forum Collection et Stream
    Réponses: 22
    Dernier message: 15/10/2005, 00h39

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