[KSH] Récupération dans une chaine après ;

Résolu
JOBiJOBa2 Messages postés 91 Date d'inscription   Statut Membre Dernière intervention   -  
JOBiJOBa2 Messages postés 91 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous,
Je ne sais pas récupérer un bout de chaine à gauche à partir de la 7ème virgule.

Par exemple:
var="1;45;JOBi;JOBa;étudiant;M;SARTHE;LE MANS;ATT"

Résulat attendu :
1;45;JOBi;JOBa;étudiant;M;SARTHE  (avec ou sans la virgule)

J'ai seulement :
echo ${var##*;}
ATT

C'est tout ce que je sais faire.
Comment est-ce que je peut faire?

Merci d'avance
^^

PS : en KSH bien sûr
A voir également:

7 réponses

jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Salut,

Une façon de faire :
[tmpfs]$ echo ${var}
1;45;JOBi;JOBa;étudiant;M;SARTHE;LE MANS;ATT

[tmpfs]$ echo ${var} | sed 's/;/\t/7;s/\t.*//'
1;45;JOBi;JOBa;étudiant;M;SARTHE

[tmpfs]$
;-))
0
JOBiJOBa2 Messages postés 91 Date d'inscription   Statut Membre Dernière intervention   5
 
Jipicy j'aimerai bien savoir comment avec la commende sed pourrai fonctionner pour mon cas.
Cela m'intéresserai.
Merci de ta réponse.
0
JOBiJOBa2 Messages postés 91 Date d'inscription   Statut Membre Dernière intervention   5
 
Mon résultat est :
1;45;JOBi;JOBa;e

et quand je fait :
var="1;45;JOBi;JOBa;eudiant;M;SARTHE;LE MANS;ATT"
echo ${var} | sed 's/;/\t/7;s/\t.*//'
1;45;JOBi;JOBa;eudian

Il y a un problème avec les "t"
^^
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Remplace le "\t" par un caractère quelconque susceptible de ne pas se trouver dans ta chaîne :
echo ${var} | sed 's/;/%/7;s/%.*//'
;-))
0
JOBiJOBa2 Messages postés 91 Date d'inscription   Statut Membre Dernière intervention   5 > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
 
Merci cela fonctionne bien.
^^
A+
0
wapette21 Messages postés 66 Date d'inscription   Statut Membre Dernière intervention   5
 
Bonjour,

Tu peut essayer ca : echo $var | cut -f1 -d;
option -d? te permet de définir ton séparateur et -f? le nombre de caractère a prendre.
0
wapette21 Messages postés 66 Date d'inscription   Statut Membre Dernière intervention   5
 
petite correction l'option f? te permet de donner la position de ta chaine exemple f7 = SARTHE donc pour ton cas c'est f1-7

désoler a++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
JOBiJOBa2 Messages postés 91 Date d'inscription   Statut Membre Dernière intervention   5
 
Oui j'y avais pensé, mais cela me donne que SARTHE au lieu de 1;45;JOBi;JOBa;eudiant;M;SARTHE.

Merci quand même, si tu as une idée n'hésite pas.

^^
0
JOBiJOBa2 Messages postés 91 Date d'inscription   Statut Membre Dernière intervention   5
 
Moi aussi petite correction, je ne connaissait pas -f1-7

Merci wapette21
A+
^^
0
JOBiJOBa2 Messages postés 91 Date d'inscription   Statut Membre Dernière intervention   5
 
Dit donc deux solution à mon problème c'est super.
Merci à vous deux.
0