Formatear un número con ceros en shell Unix
Resuelto
tbeghain
Mensajes publicados
63
Estado
Miembro
-
eko -
eko -
Hola,
Quisiera formatear en shell Unix un número de manera que siempre tenga dos posiciones numéricas. Por ejemplo, 1 se convierte en 01, 2 se convierte en 02, etc...
Por supuesto, puedo hacerlo con un poco de programación, pero ¿es posible hacerlo con un comando simple?
Gracias
Quisiera formatear en shell Unix un número de manera que siempre tenga dos posiciones numéricas. Por ejemplo, 1 se convierte en 01, 2 se convierte en 02, etc...
Por supuesto, puedo hacerlo con un poco de programación, pero ¿es posible hacerlo con un comando simple?
Gracias
Configuración: AIX 5.2
8 respuestas
-
Hola,
[tmpfs]$ for i in $(seq 10); do printf "%02d\n" "$i"; done 01 02 03 04 05 06 07 08 09 10
;-))
--
Z'@+...che.JP : Zen, ¡mis Nuggets! ;-) El conocimiento solo es útil si se comparte.
-
Hola,
hay el comando printfroot@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
--
lami20j -
-
Muchas gracias, el printf hace exactamente lo que quería.
-
Lo siento, pero tengo un pequeño problema extraño con printf con los números 8 y 9 exclusivamente
Al ejecutar el siguiente script:
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
Tengo los siguientes resultados
07
printf: 08 not completely converted
00
printf: 09 not completely converted
00
10
07
08
09
¿Por qué el 08 y el 09 no funcionan???? mientras que todos los demás números funcionan???? ¿Es por mi Unix? ¿Quién me ha echado un mal de ojo con el 8 y el 9? -
Te tranquilizo, bajo GNU/Linux tengo exactamente el mismo problema y no sé por qué.
He intentado todas las formas de "comillas" de todo tipo (simples, dobles, con, sin, etc.) y ¡nada funciona!
Incluso sin usar una variable, en línea de comando pura, se bloquea ;-((
Cualquier solución, pista o inicio de explicación serán bienvenidos.
Gracias.
--
Z'@+...che.JP : Zen, mis Nuggets ! ;-) El conocimiento sólo es útil si se comparte.
-
Hola,
prueba estolami20j@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
--
lami20j -
Cuando se escribe 01, 02 ... 08, 09, los números se interpretan en octal
en octal 8 = 10 y 9 = 11
Un número en octal no puede contener más que los dígitos hasta 7 incluidoslami20j@debian:~$ printf "%o et %o et %o\n" 0777 777 521 777 et 1411 et 1011 lami20j@debian:~$
sin embargo, cuando se escriben 8 y 9, son números decimales, por lo que puedo hacer una conversión a octallami20j@debian:~$ printf "%o y %o\n" 8 9 10 y 11
--
lami20j