Formater un nombre avec des 0 en shell Unix
Résolu
tbeghain
Messages postés
58
Date d'inscription
Statut
Membre
Dernière intervention
-
eko -
eko -
Bonjour,
Je voudrais formater en shell Unix, un chiffre de façon qu'il ait toujours deux positions numériques. par exemple 1 devient 01, 2 devient 02, etc...
Bien sûr, je peux le faire avec un peu de programmation, mais est-il possible de la faire avec une commande simple ?
Merci
Je voudrais formater en shell Unix, un chiffre de façon qu'il ait toujours deux positions numériques. par exemple 1 devient 01, 2 devient 02, etc...
Bien sûr, je peux le faire avec un peu de programmation, mais est-il possible de la faire avec une commande simple ?
Merci
A voir également:
- Formater un nombre avec des 0 en shell Unix
- Comment formater un pc - Guide
- Classic shell - Télécharger - Personnalisation
- Formater clé usb - Guide
- Afficher le 0 devant un nombre dans excel - Guide
- Formater un pc bloqué par administrateur - Guide
8 réponses
Salut,
il y a la commande printf
il y a la commande printf
root@debian:~# for i in $(seq 20);do printf "%02d\n" $i;done 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Désolé, mais j'ai un petit truc bizarre avec le printf avec les chiffres 8 et 9 exclusivement
En exécutant le script suivant :
AA=` printf "%02d\n" "07" `
echo $AA
AA=` printf "%02d\n" "08" `
echo $AA
AA=` printf "%02d\n" "09" `
echo $AA
AA=` printf "%02d\n" "10" `
echo $AA
AA=` printf "%02d\n" "7" `
echo $AA
AA=` printf "%02d\n" "8" `
echo $AA
AA=` printf "%02d\n" "9" `
echo $AA
J'ai les résultats suivant
07
printf: 08 not completely converted
00
printf: 09 not completely converted
00
10
07
08
09
Pourquoi le 08 et le 09 ne passent pas ????? alors que tous les autres chiffres passent ???? Est-ce dû à mon Unix ? Qui m'a marabouté lle 8 et le 9 ?
En exécutant le script suivant :
AA=` printf "%02d\n" "07" `
echo $AA
AA=` printf "%02d\n" "08" `
echo $AA
AA=` printf "%02d\n" "09" `
echo $AA
AA=` printf "%02d\n" "10" `
echo $AA
AA=` printf "%02d\n" "7" `
echo $AA
AA=` printf "%02d\n" "8" `
echo $AA
AA=` printf "%02d\n" "9" `
echo $AA
J'ai les résultats suivant
07
printf: 08 not completely converted
00
printf: 09 not completely converted
00
10
07
08
09
Pourquoi le 08 et le 09 ne passent pas ????? alors que tous les autres chiffres passent ???? Est-ce dû à mon Unix ? Qui m'a marabouté lle 8 et le 9 ?
Je te rassure sous GNU/Linux j'ai exactement le même problème et je ne sais pas pourquoi !?
j'ai bien essayé toutes les formes de "quotationnage" en tous genres (simple, double, avec, sans, etc.) et rien n'y fait !!!
Même sans passer par une variable, en ligne de commande pure, ça plante ;-((
Toutes solutions, pistes ou début d'explication seront les bienvenus.
Merci.
j'ai bien essayé toutes les formes de "quotationnage" en tous genres (simple, double, avec, sans, etc.) et rien n'y fait !!!
Même sans passer par une variable, en ligne de commande pure, ça plante ;-((
Toutes solutions, pistes ou début d'explication seront les bienvenus.
Merci.
Salut,
essaie ça
essaie ça
lami20j@debian:~$ cat ccm.sh #!/bin/bash AA=` printf "%02.f\n" "07" ` echo $AA AA=` printf "%02.f\n" "08" ` echo $AA AA=` printf "%02.f\n" "09" ` echo $AA AA=` printf "%02.f\n" "10" ` echo $AA AA=` printf "%02.f\n" "7" ` echo $AA AA=` printf "%02.f\n" "8" ` echo $AA AA=` printf "%02.f\n" "9" ` echo $AA lami20j@debian:~$ sh ccm.sh 07 08 09 10 07 08 09
Quand on écrit 01,02 ... 08,09 les nombres sont interprétés en octal
en octal 8 = 10 et 9 = 11
Un nombre en octal ne peux pas contenir que les chiffres jusqu'à 7 compris
en revanche quand on écrit 8 et 9 ce sont des nombre décimales donc je peux faire une conversion en octal
en octal 8 = 10 et 9 = 11
Un nombre en octal ne peux pas contenir que les chiffres jusqu'à 7 compris
lami20j@debian:~$ printf "%o et %o et %o\n" 0777 777 521 777 et 1411 et 1011 lami20j@debian:~$
en revanche quand on écrit 8 et 9 ce sont des nombre décimales donc je peux faire une conversion en octal
lami20j@debian:~$ printf "%o et %o\n" 8 9 10 et 11
C’est au niveau supérieur, de la télépathie par exemple ;-))
Mais il y a du avoir des interférences, j'ai pas bien perçu le "20" ;-DDDDD