Uso del comando seq

El comando seq crea secuencias. Le podemos indicar de uno a tres valores:

  • Último valor de la secuencia
  • Primer y último valor de la secuencia
  • Primer valor, paso y último valor de la secuencia

Con un único valor, seq devuelve una secuencia desde el 1 hasta el valor indicado:

$ seq 5
1
2
3
4
5

Con dos valores indicamos el comienzo y final de la secuencia:

$ seq 5 10
5
6
7
8
9
10

Los valores no tienen por qué ser positivos, también podemos indicar valores negativos:

$ seq -5 5
-5
-4
-3
-2
-1
0
1
2
3
4
5

Y con tres valores indicamos el comienzo, el paso y el final de la secuencia. Ojo, el paso es el valor central, no como en otros lenguajes que es el tercer valor. Así, si queremos mostrar los pares hasta el 10, escribiremos:

$ seq 0 2 10
0
2
4
6
8
10

Si el primer número es mayor que el segundo, no dará error, pero no devolverá ningún resultado. Para invertir el orden de la secuencia podemos usar rev, que no sólo nos dará la vuelta a los elementos de la lista, sino a los caracteres, con tac, o indicar un paso negativo.

$ seq 10 2 
$

Con rev no es una buena idea, ya que invierte los caracteres de los elementos (atentos al 10):

$ seq 5 10 | rev
5
6
7
8
9
01

Algo mejor es la opción de filtrar con tac:

$ seq 5 10 | tac
10
9
8
7
6
5

O utilizar un paso de -1:

$ seq 10 -1 5
10
9
8
7
6
5

También podemos indicar un paso decimal para que la secuencia no sea sólo de números enteros sino de decimales:

$ seq 2 0.5 5
2,0
2,5
3,0
3,5
4,0
4,5
5,0

Con el operador -s podemos indicar un separador distinto al salto de línea, como la coma:

$ seq -s, 2 5
2,3,4,5

O coma y espacio:

$ seq -s ", " 2 5
2, 3, 4, 5

Incluso sin espacios:

$ seq -s "" 2 5
2345

Con el modificador -w podemos indicar el relleno con ceros a la izquierda:

$ seq -w 05 10
05
06
07
08
09
10

Que es más sencillo que usar el operador -f:

$ seq -f "%02g" 5 10
05
06
07
08
09
10

No necesariamente tienen que ser los mismos caracteres que el número de caracteres del mayor valor. Podemos indicarle cualquier otro número, como el tres:

$ seq -f "%03g" 5 10
005
006
007
008
009
010

Y números negativos:

$ seq -f "%03g" -5 5
-05
-04
-03
-02
-01
000
001
002
003
004
005

Y, como todos los comandos, podemos usarlo en Shell Script. Un uso muy habitual de seq en la programación de scripts es para recorrer rangos:

#!/bin/bash

for i in $(seq 2 6)
do
    echo $i elefantes se balanceaban sobre la tela de una araña
done

que genera:

2 elefantes se balanceaban sobre la tela de una araña
3 elefantes se balanceaban sobre la tela de una araña
4 elefantes se balanceaban sobre la tela de una araña
5 elefantes se balanceaban sobre la tela de una araña
6 elefantes se balanceaban sobre la tela de una araña

 

 

Deja una respuesta

Tu dirección de correo electrónico no será publicada.