Unix: separer une chaine de caractere

Résolu/Fermé
dcervorv - 6 août 2010 à 12:03
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 - 6 août 2010 à 15:47
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

dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
6 août 2010 à 13:27
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
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
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
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
6 août 2010 à 15:47
une autre
$ a=chaine1_chaine2_chaine3_chaine4
$ IFS="_" read a1 a2 a3 a4 <<<$a
$ echo $a1 $a2 $a3 $a4
chaine1 chaine2 chaine3 chaine4
$
0