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
- Télévision numérique terrestre - Accueil - TV & Vidéo
- Pavé numérique bloqué - Guide
- Transformer une image en icone - Guide
- Clavier numérique bloqué - 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 :.