Sed "s/.*\([0-9][0-9]*\).*/ resultat = \1/&qu

Mickael -  
 mickael3905 -
Bonjour,

Je cherche à isoler un nombre dans une chaîne de caractères avec la fonction sed (j'appliquerai ensuite cette méthode à un fichier de dépouillement de résultats). J'y suis presqu'arrivé mais je suis bloqué. Dans l'exemple ci-dessous, j'obtient résulat = 8 au lieu de résultat = 158.

chaine de départ ejkf fed 158e fd
commande s/.*\([0-9][0-9]*\).*/ resultat = \1/
resultat resultat = 158

Si quelqu'un pouvait m'indiquer ou est mon erreur, ça me rendrait bien service.

Merci d'avance pour vos réponses.

Mickaël

3 réponses

asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
 
Salut, il en faudrait unpeut plus pour trouver une expression réguliére qui match bien ce que tu souhaites

Y a t-il toujours qu'un seul nombre par chaine ?
est-ce que le caractére précédent le nombre est identifiable dans tout les cas (espace ?) idem pour la fin

ceci fonctionne, dans le cas donné, mais par forcément dans tout les cas que tu auras.
sed 's/.*[^0-9]\([0-9]\+\).*$/ resultat = \1/'
ce qui précéde ton nombre (directement sans espace) ne peut etre numérique [^0-9]
0
teebo Messages postés 33491 Date d'inscription   Statut Modérateur Dernière intervention   1 793
 
Salut,
Alors récapitulons, tu cherches

.*\([0-9][0-9]*\).*

Elle a une drôle de tête ta regexp, pourquoi pas s/[^0-9]//g tout simplement?
0
mickael3905
 
Merci beaucoup pour vos réponses.

Je n'avais pas pensé à la solution évoquée par teebo, je crois que c'est la plus simple quand même et celle qui me convient le mieux.

Mickaël
0