Unix: separer une chaine de caractere

Résolu
dcervorv -  
dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

j'ai une chaine de caractère de type chine1_chaine2_chaine3_chaine4
j'aimerai récupérer chaine1 dans une variable de même pour chaine2 et chaine3
mon idée était d'identifier l'emplacement des "_" et de faire un cut
je suis totalement novice en unix (honte sur moi je sais :D)
quelqu'un pourrais-il m'aider ?

Ps: c'est pour être utilisé dans un script bash

4 réponses

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    3 variantes
    $ a=chaine1_chaine2_chaine3_chaine4
    $ a1=$(cut -d "_" -f 1 <<<$a)
    $ a2=$(cut -d "_" -f 2 <<<$a)
    $ a3=$(cut -d "_" -f 3 <<<$a)
    $ a4=$(cut -d "_" -f 4 <<<$a)
    $ echo $a1 $a2 $a3 $a4
    chaine1 chaine2 chaine3 chaine4
    $
    
    $ a=chaine1_chaine2_chaine3_chaine4
    $ c=($(IFS="_" ; echo $a))
    $ echo ${c[0]} ${c[1]} ${c[2]} ${c[3]}
    chaine1 chaine2 chaine3 chaine4
    $ 
    
    $ a=chaine1_chaine2_chaine3_chaine4
    $ IFS="_"  set $a
    $ echo $1 $2 $3 $4
    chaine1 chaine2 chaine3 chaine4
    $
    0
  2. romzzzz
     
    Hey,

    autre possibilité :

    echo chaine1_chaine2_chaine3 | awk -F"_" '{ print $1 }'
    chaine1

    echo chaine1_chaine2_chaine3 | awk -F"_" '{ print $2 }'
    chaine2

    ainsi de suite !
    0
  3. dcervorv
     
    Merci a tous!!!!!!!!!!!!!!!!
    j'ai jamais eu autant de proposition :D
    il me reste plus qu'a les comprendre :p (google sera mon amis)

    ++
    0
  4. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    une autre
    $ a=chaine1_chaine2_chaine3_chaine4
    $ IFS="_" read a1 a2 a3 a4 <<<$a
    $ echo $a1 $a2 $a3 $a4
    chaine1 chaine2 chaine3 chaine4
    $
    0