Zero-Padding en Bash

Hoy me he encontrado con el problema de tener que generar una secuencia de números desde un terminal con bash. A todos los números de dicha secuencia debían estar formados por tres caracteres con lo que debía añadir ceros de relleno a la izquierda del número.



Buscando un poco me he encontrado con esta interesante entrada donde explica como usar el comando printf basándose en el uso que el autor le da a la función en C.

http://jonathanwagner.net/2007/04/zero-padding-in-bash/

A modo de resumen, para generar la secuencia he utilizado el siguiente bucle:

for i in {1..10}; do printf «%03d\n» $i; done
001
002
003
004
005
006
007
008
009
010


De esta forma me he podido descargar los 100 ficheros secuenciales que me interesaban de una forma rápida y cómoda.

for i in {1..100}; do seq=`printf «%03d\n» $i`; wget $url1$seq$url2; done

Nota: parece que desde la versión 4.1.5 de bash se puede simplificar de la siguiente manera:
$ for i in {01..10}; do echo $i; done
01
02
03
04
05
06
07
08
09
10

Las últimas versiones de las diferentes distribuciones de GNU/Linux ya vienen con una versión de bash superior, con lo que la segunda opción será mas óptima. En sistemas antiguos o con otras shells se podría utilizar la opción con el printf.

Anuncio publicitario

Publicado por Julián García-Sotoca

Ingeniero de Telecomunicación y administrador de sistemas (GNU/Linux - UNIX). Entusiasta del Software libre y Open Source. Working behind the scenes

Un comentario en “Zero-Padding en Bash

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

A %d blogueros les gusta esto: