Sed "s/.*\([0-9][0-9]*\).*/ resultat = \1/&qu
Mickael
-
mickael3905 -
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
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
-
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]
-
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?
-
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