5 ejemplos prácticos del comando seq en Linux
La entrada de hoy va sobre una pequeña herramienta de la línea de comandos llamada seq. Aunque parece sencilla, combinada con otras puede ser de gran ayuda. Concretamente seq se encarga de imprimir una secuencia de números, según los parámetros que le adjuntemos.
Si consultamos su página de man podemos ver como funciona. Básicamente, cuando se le añade un número, nos mostrará una secuencia para llegar hasta dicho número.
Su uso básico es el siguiente:
seq [OPCIÓN]... ÚLTIMO seq [OPCION]... PRIMERO ÚLTIMO seq [OPCIÓN]... PRIMERO INCREMENTO ÚLTIMO
La mejor forma de decir es hacer, así aquí vamos con algunos ejemplos prácticos.
5 ejemplos plácticos del comando seq
1. Uso básico
Veamos un ejemplo sencillo:
pi@raspberrypi:~ $ seq 10
Con el resultado:
Como hemos dicho, también le podemos indicar que empiece en un número y acabe en otro, por ejemplo:
pi@raspberrypi:~ $ seq 7 15
Una muestra del resultado en este caso:
A continuación, también podemos establecer un valor incremental, que es 1 por defecto. Por ejemplo, si deseamos que seq imprima de 1 a 15, pero con una diferencia de 2, así es como lo podemos hacer:
seq 1 2 15
Con el resultado:
2. Añadir un separador
Si lo deseamos, también podemos añadir un separador para que la salida de secuencia se vea mejor. Esta función está disponible a través de la opción de línea de comandos -s
.
En este caso, añadiendo una «,» como separador:
seq -s, 1 9
Con el resultado:
3. Especificar un formato
Un parámetro muy interesante es -f o —format
, que nos permite usar formato de punto flotante al estilo de printf
Si consultamos la información sobre este parámetro, se nos indica que debemos imprimir todos los números usando FORMAT. Este debe contener exactamente una de las especificaciones de conversión de punto flotante de estilo printf ''% a ',`% e', `% f ',`% g', `% A ',`% E', `% F ' , '% G'
. El '%'
puede ir seguido de cero o más banderas o «flags» tomadas del conjunto ‘- + # 0’, luego un ancho opcional que contiene uno o más dígitos, luego una precisión opcional que consiste en un ‘.’ seguido de cero o más dígitos. FORMAT también puede contener cualquier número de especificaciones de conversión '%%'
. Todas las especificaciones de conversión tienen el mismo significado que con printf
.
El formato predeterminado se deriva de FIRST, STEP y LAST. Si todos estos usan una representación decimal de punto fijo, el formato predeterminado es '% .Pf'
, donde P es la precisión mínima que puede representar los números de salida exactamente. De lo contrario, el formato predeterminado es '% g'
.
Veamos un ejemplo:
seq -f "%02g" 6
Con el resultado:
4. Junto a otros comandos
Supongamos que deseamos realizar la suma de algunos números, digamos del 111 al 121. Así es como podemos hacerlo:
expr `seq -s " + " 111 121`
Con el resultado:
O bien, podemos consultar también este ejemplo. Vamos a crear un montón de archivos nuevos con nombres en los que solo cambia un valor entero. Por ejemplo, archivo1, archivo2, archivo3, etc. De esta manera:
touch $(seq -f "file%g" 1 10)
Con el resultado:
5. Junto a la herramienta gnuplot
Tengo intención de escribir una entrada más adelante sobre la herramienta de generación de gráficas, desde la línea de comandos, llamada GNUPlot. Así que podemos tener un pequeño aperitivo en combinación con seq.
seq 1 100 |gnuplot -p -e 'plot "/dev/stdin"'
Con el resultado:
Y esto es todo. ¿Tienes experiencia con seq? ¿Se te ocurre alguna combinación interesante junto a otro programa?
Espero que esta entrada os sea de utilidad en algún momento.