Unix: separer une chaine de caractere

[Résolu/Fermé]
Signaler
-
Messages postés
18266
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 septembre 2021
-
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

Messages postés
18266
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 septembre 2021
5 375
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
$
Hey,

autre possibilité :

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

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

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

++
Messages postés
18266
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 septembre 2021
5 375
une autre
$ a=chaine1_chaine2_chaine3_chaine4
$ IFS="_" read a1 a2 a3 a4 <<<$a
$ echo $a1 $a2 $a3 $a4
chaine1 chaine2 chaine3 chaine4
$