Transformer une valeur numérique
bzhmickael35
Messages postés
4
Statut
Membre
-
lEprofSonDkon Messages postés 227 Statut Membre -
lEprofSonDkon Messages postés 227 Statut Membre -
Bonjour,
Je cherche à réaliser un petit script pour transformer une valeur obtenu avec l'aide d'un AWK. Je souhaite transformer :
Merci d'avance pour toute l'aide apportée.
Je cherche à réaliser un petit script pour transformer une valeur obtenu avec l'aide d'un AWK. Je souhaite transformer :
3001-3009en
3001,3002,3003,3004,3005,3006,3007,3008,3009.
Merci d'avance pour toute l'aide apportée.
A voir également:
- Transformer une valeur numérique
- Télévision numérique - Guide
- Pavé numérique bloqué - Guide
- Clavier numérique bloqué - Guide
- Transformer une image en icone - Guide
- Quelles sont les 2 orientations possibles d'une page d’un document numérique ? - Guide
2 réponses
Bonjour,
Voici une manière de procéder :
script.awk
Ce qui donne à l'exécution :
Quelques explications :
Bonne chance
Voici une manière de procéder :
script.awk
/[0-9]+-[0-9]+/ { n = split($0, array, "-") imin = int(array[1]) imax = int(array[2]) s = ""; for (i = imin; i <= imax; i++) { if (i > imin) s = s "," s = s i; } print s; }
Ce qui donne à l'exécution :
(mando@silk) (~) $ echo "3001-3009" | awk -f script.awk
3001,3002,3003,3004,3005,3006,3007,3008,3009
Quelques explications :
- La première ligne s'assure que la ligne qui entre est formée de deux entiers séparés d'un tiret (voir expressions régulières)
- La ligne suivante sépare la ligne en question sur le caractère
-
et stocke les deux valeurs dans le tableauarray
. - On construit ensuite progressivement une chaine
s
en itérant sur les valeurs déduites dearray
.
Bonne chance
il faut s'assurer que la données ne contient que des nombres, du début ( ) à la fin ( ) : .
et on peut simplifier la boucle : .