Unix: separer une chaine de caractere
Résolu
dcervorv
-
dubcek Messages postés 18789 Date d'inscription Statut Contributeur Dernière intervention -
dubcek Messages postés 18789 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
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
hello
3 variantes
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 $
Hey,
autre possibilité :
echo chaine1_chaine2_chaine3 | awk -F"_" '{ print $1 }'
chaine1
echo chaine1_chaine2_chaine3 | awk -F"_" '{ print $2 }'
chaine2
ainsi de suite !
autre possibilité :
echo chaine1_chaine2_chaine3 | awk -F"_" '{ print $1 }'
chaine1
echo chaine1_chaine2_chaine3 | awk -F"_" '{ print $2 }'
chaine2
ainsi de suite !