El comando seq en Linux: generar secuencias de números

Introducción

En el mundo de Linux, la capacidad de generar rápidamente secuencias de números es esencial para tareas como crear nombres de archivos, probar bucles o alimentar datos a otros programas. El comando seq ofrece una solución sencilla y potente para producir listas numéricas con solo unas pocas pulsaciones de tecla. En este artículo exploraremos su sintaxis, sus opciones más útiles y varios ejemplos prácticos que podrás aplicar en tus scripts y en la línea de comandos.

Sintaxis básica

La forma más simple de usar seq es especificar un número final. Por ejemplo:

seq 5

Esto imprimirá los números del 1 al 5, cada uno en una línea separada. Si deseas definir también el número inicial, basta con proporcionar dos argumentos:

seq 3 8

El resultado será la secuencia 3, 4, 5, 6, 7, 8. Finalmente, puedes añadir un tercer argumento que represente el incremento (o paso) entre valores:

seq 0 2 10

Esta línea genera 0, 2, 4, 6, 8, 10. Nota que el último número no supera el límite establecido.

Opciones útiles

  • -f o –format: Permite aplicar un formato printf a cada número. Por ejemplo, seq -f '%02g' 1 9 produce 01, 02, …, 09.
  • -s o –separator: Cambia el separador entre números. Por defecto es el salto de línea; con seq -s ', ' 1 5 obtienes 1, 2, 3, 4, 5.
  • -w o –equal-width: Añade ceros a la izquierda para que todos los números tengan el mismo ancho, útil cuando se necesita alineación.
  • –help y –version: Muestran la ayuda y la versión del comando.

Ejemplos prácticos

A continuación se presentan algunos escenarios donde seq resulta particularmente útil.

Crear nombres de archivos con numeración

Supongamos que necesitas generar diez archivos de prueba llamados file01.txt a file10.txt. Puedes combinar seq con un bucle for de Bash:

for i in $(seq -f '%02g' 1 10); do
    touch file$i.txt
done

Generar una secuencia para un bucle numérico

Si deseas iterar del 20 al 5 de forma descendente, basta con especificar un paso negativo:

for i in $(seq 20 -2 5); do
    echo Valor: $i
done

Alimentar a otras herramientas

Muchos programas aceptan entrada estándar. Por ejemplo, para crear un archivo con los números del 1 al 100 separados por tabulaciones:

seq -s $'\\t' 1 100 > numeros.tsv

Crear una matriz de coordenadas simples

Puedes producir pares (x, y) usando dos invocaciones de seq y paste:

seq 0 4 | while read x; do
    seq 0 2 | while read y; do
        echo $x,$y
    done
done

Consejos y trucos

  • Cuando necesites ceros a la izquierda, la combinación de -f y un formato como %03g es más legible que usar -w solo.
  • Recuerda que seq trabaja con números de punto flotante si se le dan argumentos decimales; por ejemplo, seq 0 0.5 2 producirá 0, 0.5, 1, 1.5, 2.
  • En scripts portables, verifica la disponibilidad de seq (forma parte del paquete coreutils en la mayoría de distribuciones).
  • Para evitar problemas con espacios en los separadores, usa la sintaxis de ANSI-C quoting $'\\t' como se mostró anteriormente.

Conclusión

El comando seq es una herramienta pequeña pero increíblemente versátil que ahorra tiempo y reduce la complejidad de muchas tareas cotidianas en Linux. Dominar su sintaxis y sus opciones te permitirá generar secuencias numéricas precisas, formatearlas según tus necesidades y integrarlas fácilmente en scripts más elaborados. La próxima vez que te encuentres necesitando una lista de números, recuerda que seq está a un solo comando de distancia.