Il comando seq stampa una sequenza di numeri interi o reali, adatta per il piping ad altri programmi. Il comando seq può tornare utile in vari altri comandi e cicli per generare sequenze di numeri.
La sintassi
La sintassi generale del comando “seq” è:
# seq [options] specification
Gli esempi
1. Per stampare semplicemente una sequenza di numeri a partire da 1, utilizzare il comando seguente:
# seq 4 1 2 3 4
Per impostazione predefinita, il comando seq inizia a stampare la sequenza di numeri da 1, se non diversamente specificato.
2. Puoi anche fornire un limite superiore e inferiore alla sequenza di numeri generata dal comando "seq":
# seq 6 9 6 7 8 9
3. Se dobbiamo generare qualche altra progressione aritmetica, possiamo usare il comando seq, la cui sintassi è mostrata qui:
# seq [start] [incr] [stop]
Questo genera i numeri start, start + incr, start + incr + incr …, fino a stop. Capiamolo con un esempio:
# seq 1 3 10 1 4 7 10
Qui, iniziamo con 1 e lo incrementiamo di 3 ogni volta finché non otteniamo un valore inferiore o uguale a 10. Il valore per start, incr e stop può essere anche numeri interi positivi o negativi o numeri decimali a virgola mobile.
4. Vediamo un esempio di incremento negativo che fondamentalmente stampa la sequenza all'indietro. Ad esempio:
# seq 10 -2 4 10 8 6 4
Formattazione dell'output del comando “seq”
Puoi formattare l'output del comando seq usando vari argomenti del comando.
1. Come hai notato in tutti i comandi precedenti, l'output è sempre una sequenza di numeri separati da una nuova riga. Bene, puoi cambiarlo nel modo che preferisci. Usa l'opzione "-s" del comando seq come mostrato di seguito:
# seq -s "|" 5 1|2|3|4|5
2. Puoi anche formattare l'output usando l'opzione "-f". Utilizza un formato di stile printf per stampare ogni numero. È possibile utilizzare i caratteri di copertina come E, e, f, G, g e % con "-f" come mostrato di seguito. L'impostazione predefinita è %g.
# seq -f '##%g##' 1 5 ##1## ##2## ##3## ##4## ##5##
# seq -f %f 1 5 1.000000 2.000000 3.000000 4.000000 5.000000
3. Puoi anche equalizzare le larghezze di tutti i numeri riempiendo con zeri se necessario. Questa opzione non ha effetto con l'opzione -f.
# seq -w 1 10 01 02 03 04 05 06 07 08 09 10
Uso di seq nei loop Bash
Possiamo anche usare seq con un ciclo for usando la sostituzione del comando, come mostrato qui:
$ for i in $(seq 1 0.5 4) do echo "The number is $i" done
L'uscita:
The number is 1 The number is 1.5 The number is 2 The number is 2.5 The number is 3 The number is 3.5 The number is 4