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

Linux Discussion :

découper une variable


Sujet :

Linux

  1. #1
    Futur Membre du Club
    Inscrit en
    Août 2005
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 5
    Points : 6
    Points
    6
    Par défaut découper une variable
    Bonjour,

    je fais un ksh sous unix et je voudrais découper une variable. Je m'explique, j'ai cette variable : maVariable = "aaaa|bbb|ccc"
    je voudrais récupérer 3 variables.
    Je connais la commande
    set -A tableauVariable maVariable

    mais le problème avec ce set -A c'est qu'il ne découpe les variables dans un tableau que si elle sont séparé par un espace.

    Est ce que quelqu'un connait la fonction miracle ?

    Merci

  2. #2
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Points : 28 119
    Points
    28 119
    Par défaut
    Bonjour,

    Solution pas top élégante, mais j'ai pas mieux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    awk -F'|' '{ print $1 " " $2 " " $3 }' MaVariable | set -A tableauVariable
    Peut aussi se faire avec sed, en remplaçcant les | par des ' ' :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo $maVariable | sed 's/\|/ /g' | set -A tableauVariable
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  3. #3
    Futur Membre du Club
    Inscrit en
    Août 2005
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    Merci pour cette réponse mais le problème est qu'il peut y avoir des espaces entre les pipes ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maVariable="aa bb cc|aaa|vvv gg hhhh"
    Voila, je voudrais récupérer 3 variables différentes :
    aa bb cc
    aaa
    vvv gg hhhh
    donc je pense qu'il faut que j'oublie le set -A. Il faut que je trouve une solution !
    sachant qu'en faite c'est un fichier que j'ouvre qui contient x ligne et il faut que je récupére les 3 champs de chaques lignes !
    exemple du fichier :
    aa bb cc|aaa|vvv gg hhhh
    aa cc|aaa ee|vvv gg e
    aa bb d|aaa|gg hhhh
    Merci de ton aide !

  4. #4
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Points : 28 119
    Points
    28 119
    Par défaut
    Ah donc mon idée d'utiliser awk n'est pas si débile que ca

    Donc en fait, ce que je ferai à ta place, c'est :
    • lire le fichier ligne par ligne
    • traiter chaque ligne avec un awk pour récupérer les 3 variables


    Awk te permet de découper une ligne selon un séparateur que tu précises (option -F), puis en faire quelque chose :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    awk -F'|' '{ l_action_que_tu_veux }'
    Imaginons que tu souhaites mettre chacune des 3 valeurs dans trois variable, que nous appellerons x, y et z pour l'exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #TantQue (le fichier n'est pas fini)
    #   LIGNE = lecture de la ligne courante
       awk -F '|' { "'$X'"=$1 ; "'$Y'"=$2 ; "'$Z'"=$3 }'
    #  Ici ton traitement dans ton script, avec X, Y et Z qui vaudront les bonnes valeurs
    # FinTantQue
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

Discussions similaires

  1. macro pour découper une variable
    Par joyeux_lapin13 dans le forum Macro
    Réponses: 11
    Dernier message: 24/09/2010, 21h02
  2. [Batch] Découper une variable _dynamique_
    Par Tuesd dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 22/10/2009, 12h14
  3. découper une variable selon des balises
    Par cirdec49 dans le forum C#
    Réponses: 8
    Dernier message: 20/02/2009, 19h29
  4. découper une variable
    Par shgeoffrey dans le forum Langage
    Réponses: 4
    Dernier message: 27/09/2008, 21h21
  5. Découper une variable de type string pour l'inserer a un commentaire
    Par Many31 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 25/01/2008, 13h32

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