Cómo usar el comando seq en Linux

Contenidos

Un indicador de terminal en una PC con Linux.

El Linux seq El comando genera listas de números en un abrir y cerrar de ojos. Pero, ¿cómo se puede llevar a la práctica esta funcionalidad? Le mostraremos cómo seq puede resultarle útil.

El comando seq

A primera vista, Linux seq El comando parece ser algo extraño. Te posibilita generar secuencias de números rápido y listo! A pesar de esto, la keyword aquí es «rápidamente». En un momento, verá cuán rápido se puede ejecutar este pequeño comando.

Sin tener en cuenta cómo se generen, ¿qué tan útil es una lista de números? los seq El comando se agregó a la octava edición de Unix en 1985. Ha estado ahí desde entonces, por lo que debe hacer algo que valga la pena.

los filosofía de Unix es que está repleto de pequeñas utilidades que hacen una cosa y la hacen bien. Uno de los principios centrales de esta filosofía es escribir programas que acepten información de otros programas. De todos modos, eso además significa que estos programas disponen que generar una salida que pueda ser utilizada como entrada por otros programas.

los seq El comando entra en juego cuando se utiliza con otros comandos que hacen uso de su salida, ya sea a través de tuberías o expansión de la línea de comandos.

Generación de listas básicas

Si lanza seq con un solo número como parámetro de línea de comandos, cuenta de uno a ese número. Posteriormente imprime los números en la ventana del terminal, un número por línea, como se muestra a continuación:

seq 6

Si escribe dos números en la línea de comando, el primero será el número inicial y el segundo será el número final, como se muestra a continuación:

seq 4 10

Puede determinar un tamaño de paso al incluir un tercer número. Se encuentra entre los números de inicio y final. Escribimos lo siguiente para preguntar seq para crear una lista de números que comience con seis, termine en 48 y utilice un paso de seis:

seq 6 6 48

Contando hacia atrás

Además podemos preguntar seq para crear una lista de números de mayor a menor. A pesar de esto, para hacerlo, debemos dar un paso que sea negativo.

El siguiente comando produce una lista que cuenta de 24 a 12 en pasos de 6 debido a que escribimos el paso como un número negativo:

seq 24 -6 12

Contar con decimales

Los números de inicio, final y paso además pueden ser decimales. Si alguno de los números es decimal, los demás además se tratan como decimales. El siguiente comando genera una lista de números con un paso de 0.2:

seq 1 0.2 2

La velocidad de seq

seq es increíblemente rápido; el único cuello de botella es el tiempo que le toma escribir el comando en la ventana de la terminal. Para probar su velocidad, pidamos una lista de 250.000 números.

Escribimos lo siguiente, usando el time comando para ver cuánto tarda el procedimiento en completarse:

time seq 250000

Los resultados se muestran debajo de la lista. Inclusive en nuestra PC de prueba de potencia moderada, seq es sorprendentemente rápido.

La lista completa se creó y se escribió en la pantalla en aproximadamente 1/3 de segundo. Si redirigimos la lista a un archivo, inclusive podemos evitar la sobrecarga de escribir en la ventana del terminal.

Para hacerlo, escribimos lo siguiente:

time seq 250000 > numbers.txt

El tiempo que lleva completar la lista y crear el archivo es ahora de aproximadamente 1/7 de segundo.

Usando un separador

Un carácter de nueva línea es el carácter predeterminado que se muestra entre cada número de una lista. Es por ello que aparecen como una lista vertical, con cada número en su propia línea. Si es necesario, puede proporcionar otro separador.

A modo de ejemplo, supongamos que necesita crear una lista delimitada por comas, una lista dividida por dos puntos o cualquier otro signo de puntuación o símbolo. El delimitador es en realidad una cadena, por lo que puede usar más de un carácter.

Usaremos el -s (separador) opción. El siguiente comando producirá una lista delimitada por comas:

seq s, 6 6 36

Este comando usará dos puntos (:) como separador:

seq -s: 6 6 36

Este comando dice seq usar dos guiones-) como separador:

seq -s-- 6 6 36

Utilizar cadenas de formato

los seq el comando además es compatible Estilo de lenguaje C cadenas de formato. Estos le posibilitan formatear la salida con mucho más control que simplemente especificar un separador. Para utilizar una cadena de formato, utiliza el -f opción (formato).

El siguiente comando dice seq para utilizar ceros para rellenar la salida a dos caracteres:

seq -f "%02g" 6

Podemos formatear la cadena con cualquier texto que nos guste y colocar el número en cualquier lugar de la cadena, de la próxima manera:

seq -f "Number %02g in a C-like format string" 6

Una forma rápida de configurar el relleno cero

La forma más rápida de determinar el relleno de ceros es usar el -w (igual ancho) opción. Esto dice seq usar ceros para rellenar los números, de modo que todos tengan el mismo ancho que el número más grande.

El siguiente comando cuenta de 0 a 1000 en pasos de 100, y todos los números se rellenarán con ceros:

seq -w 0 100 1000

El número más largo tiene cuatro caracteres, por lo que todos los números más estrechos se rellenan con ceros hasta ese ancho (inclusive 0 se rellena con cuatro ceros).

Seq de tubería en bc

Al determinar el separador como un símbolo matemático y canalizar la lista en el bc comando, podemos evaluar los números en esa lista.

El siguiente comando genera una lista de números separados por asteriscos (*), comenzando en uno y terminando con seis:

seq -s* 6

Si alimentamos esa lista en bc, evalúa la lista usando los asteriscos (*) como símbolos de multiplicación:

seq -s* 6 | bc

Además podemos hacer esto con otros símbolos. El siguiente comando utiliza un signo más (+) para crear una lista en la que se agregan todos los números:

seq -s+ 5

Escribimos lo siguiente para canalizar eso en bc y examinar la lista:

seq -s+ 5 | bc

Crear archivos con seq

los touch mando actualiza las marcas de fecha y hora en archivos. Si el archivo no existe, toque lo crea. Podemos utilizar la expansión de la línea de comandos con touch y seq para crear una colección de archivos con nombres temáticos pero numerados de manera distinto.

Crearemos un conjunto de 10 archivos con el mismo nombre base y un número distinto (archivo-1.txt, archivo-2.txt, etc.). Escribimos lo siguiente:

touch $(seq -f "file-%g.txt" 1 10)

Posteriormente, escribimos lo siguiente para verificar los archivos:

ls file*

Usando seq en Bash Loops

Nosotros podemos utilizar seq en scripts Bash para controlar bucles con decimales.

Escriba el siguiente texto en un editor y posteriormente guárdelo como «loops.sh»:

#!/bin/bash

  for val in $(seq 5 0.2 6.6); do

  echo "The value is now: $val"

done

A continuación, escribimos lo siguiente para que nuestro nuevo script sea ejecutable:

chmod +x loop.sh

Cuando ejecutamos el script, el contador de bucles se imprime en la ventana del terminal. Posteriormente, podemos escribir lo siguiente para ver que el contador de bucle decimal aumenta con cada iteración del bucle:

./loop.sh

Recuérdalo seq además puede contar hacia atrás; puedes utilizar eso en bucles de la misma manera.

Agradable y simple

Una cosa sobre seq es que no hay mucha curva de aprendizaje. Tiene un refrescantemente corto man página, pero aún puede usarlo de maneras interesantes.

Debido a que a menudo necesitamos crear rápidamente archivos de prueba con tamaños realistas, usamos seq con una cadena de formato. Posteriormente redirigimos la salida para crear un archivo que contenga tantas líneas de datos ficticios como queramos.

Suscribite a nuestro Newsletter

No te enviaremos correo SPAM. Lo odiamos tanto como tú.