El comando seq de Linux genera listas de números en un abrir y cerrar de ojos. Pero, ¿cómo se puede poner en práctica esta funcionalidad? Le mostraremos cómo seq puede resultarle útil.
Tabla de contenido
El comando seq
A primera vista, el comando seq de Linux parece ser algo extraño. Te permite generar secuencias de números rápido y listo! La palabra clave aquí, sin embargo, es «rápido». En un momento, verá cuán rápido se puede ejecutar este pequeño comando.
Independientemente de cómo se generen, ¿qué tan útil es una lista de números? El comando seq 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á lleno 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. Por supuesto, eso también significa que estos programas tienen que generar una salida que pueda ser utilizada como entrada por otros programas.
El comando seq se hace efectivo cuando se usa 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 inicia seq con un solo número como parámetro de línea de comando, cuenta de uno a ese número. Luego 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 de inicio y el segundo será el número final, como se muestra a continuación:
seq 4 10
Puede establecer un tamaño de paso al incluir un tercer número. Se encuentra entre los números inicial y final. Escribimos lo siguiente para pedirle a seq que cree una lista de números que comience con seis, termine en 48 y use un paso de seis:
seq 6 6 48
Contando hacia atrás
También podemos pedirle a seq que cree una lista de números de mayor a menor. Sin embargo, 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 porque escribimos el paso como un número negativo:
seq 24 -6 12
Contar con decimales
Los números de inicio, fin y paso también pueden ser decimales. Si alguno de los números es decimal, los demás también 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 lleva 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 hora comando para ver cuánto tarda el proceso en completarse:
time seq 250000
Los resultados se muestran debajo de la lista. Incluso 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, incluso podemos evitar la sobrecarga de escribir en la ventana del terminal.
Para hacerlo, escribimos lo siguiente:
time seq 250000 > numbers.txt
Un carácter de nueva línea es el carácter predeterminado que se muestra entre cada número en una lista. Por eso aparecen como una lista vertical, con cada número en su propia línea. Si es necesario, puede proporcionar otro separador.
Por 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 utilizar más de un carácter.
Usaremos la opción -s (separador). 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 le dice a seq que use dos guiones (-) como separador:
seq -s-- 6 6 36
Usar cadenas de formato
El comando seq también admite Estilo de lenguaje C cadenas de formato. Estos le permiten formatear la salida con mucho más control que simplemente especificar un separador. Para usar una cadena de formato, usa la opción -f (formato).
El siguiente comando le dice a seq que use 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 siguiente 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 establecer el relleno de ceros es usar la opción -w (igual ancho). Esto le dice a seq que use ceros para rellenar los números, por lo que todos tienen el mismo ancho que el número más grande.
El siguiente comando cuenta de 0 a 1,000 en pasos de 100, y todos los números se completará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 (incluso 0 se rellena con cuatro ceros).
Secuencia de tubería en bc
Al establecer el separador como un símbolo matemático y canalizar la lista al comando bc, podemos evaluar los números en esa lista.
El siguiente comando genera una lista de números separados por asteriscos
seq -s* 6
comenzando en uno y terminando con seis:
seq -s* 6 | bc
Si alimentamos esa lista en bc, evalúa la lista usando los asteriscos
seq -s+ 5
como símbolos de multiplicación:
seq -s+ 5 | bc
Escribimos lo siguiente para canalizarlo a bc y evaluar la lista:
seq -s * 6 en una ventana de terminal. Crear archivos con seq El comando táctil
actualiza las marcas de fecha y hora
touch $(seq -f "file-%g.txt" 1 10)
en archivos. Si el archivo no existe, toque lo crea. Podemos usar 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 diferente.
ls file*
Luego, escribimos lo siguiente para verificar los archivos:
toque $ (seq -f
Usando seq en Bash Loops
#!/bin/bash for val in $(seq 5 0.2 6.6); do echo "The value is now: $val" done
Podemos usar seq en scripts Bash para controlar bucles con decimales.
chmod +x loop.sh
A continuación, escribimos lo siguiente para que nuestro nuevo script sea ejecutable:
./loop.sh
Cuando ejecutamos el script, el contador de bucles se imprime en la ventana del terminal. Luego, podemos escribir lo siguiente para ver el aumento del contador del ciclo decimal con cada iteración del ciclo:
./loop.sh en una ventana de terminal.
Recuerde que seq también puede contar hacia atrás; puedes usar eso en bucles de la misma manera. Agradable y simple Una cosa acerca de seq es que no hay mucha curva de aprendizaje. Tiene un
refrescantemente corto