Cum să utilizați comanda seq pe Linux

Publicat: 2022-01-29
Un prompt de terminal pe un computer Linux.
Fatmawati Achmad Zaenuri/Shutterstock

Comanda Linux seq generează liste de numere cât ai clipi. Dar cum poate fi folosită această funcționalitate în practică? Vă vom arăta cum vă poate fi util seq.

Comanda seq

La prima vedere, comanda Linux seq pare a fi ceva ciudat. Vă permite să generați secvențe de numere rapid și atât! Cuvântul cheie aici, totuși, este „rapid”. Într-o clipă, vei vedea cât de repede poate rula această mică comandă.

Oricum, indiferent de modul în care sunt generate, cât de utilă este o listă de numere? Comanda seq a fost adăugată la cea de-a 8-a ediție a Unix în 1985. A fost acolo de atunci, așa că trebuie să facă ceva util.

Filosofia Unix este că este plin de mici utilități care fac un lucru și îl fac bine. Una dintre principiile centrale ale acestei filozofii este de a scrie programe care acceptă input de la alte programe. Desigur, asta înseamnă, de asemenea, că aceste programe trebuie să genereze rezultate care pot fi folosite ca intrare de către alte programe.

Comanda seq devine proprie atunci când este folosită cu alte comenzi care folosesc ieșirea sa, fie prin conducte, fie prin extinderea liniei de comandă.

Generarea listei de bază

Dacă lansați seq cu un singur număr ca parametru de linie de comandă, se numără de la unu la acel număr. Apoi tipărește numerele în fereastra terminalului, câte un număr pe linie, după cum se arată mai jos:

 secv. 6 

Publicitate

Dacă introduceți două numere pe linia de comandă, primul va fi numărul de început și al doilea va fi numărul de final, după cum se arată mai jos:

 secv. 4 10 

Puteți seta o dimensiune a pasului incluzând un al treilea număr. Se află între numerele de început și de sfârșit. Introducem următoarele pentru a cere seq să creeze o listă de numere care începe cu șase, se termină la 48 și folosește un pas de șase:

 secv. 6 6 48 

Numărând înapoi

De asemenea, putem cere seq să creeze o listă de numere de la cel mai mare la cel mai mic. Pentru a face acest lucru, totuși, trebuie să oferim un pas care este negativ.

Următoarea comandă produce o listă care numără de la 24 la 12 în pași de 6, deoarece introducem pasul ca număr negativ:

 secv. 24 -6 12 

Numărarea cu zecimale

Numerele de început, de sfârșit și de pas pot fi, de asemenea, zecimale. Dacă oricare dintre numere este zecimală, celelalte sunt, de asemenea, tratate ca zecimale. Următoarea comandă generează o listă de numere cu un pas de 0,2:

 secv 1 0,2 2 

Viteza secv

seq este extraordinar de rapid - singurul blocaj este timpul necesar pentru a introduce comanda în fereastra terminalului. Pentru a-i testa viteza, să cerem o listă de 250.000 de numere.

Publicitate

Introducem următoarele, folosind comanda time pentru a vedea cât timp durează procesul:

 timp secv 250000 

Rezultatele sunt afișate sub listă. Chiar și pe computerul nostru de testare cu putere moderată, seq este surprinzător de rapid.

Întreaga listă a fost creată și scrisă pe ecran în aproximativ 1/3 de secundă. Dacă redirecționăm lista într-un fișier, putem evita chiar și suprasarcina de tastare în fereastra terminalului.

Pentru a face acest lucru, introducem următoarele:

 time seq 250000 > numere.txt 

Timpul necesar pentru a completa lista și a crea fișierul este acum de aproximativ 1/7 de secundă.

Folosind un separator

Un caracter de linie nouă este caracterul implicit afișat între fiecare număr dintr-o listă. De aceea apar ca o listă verticală, cu fiecare număr pe linia lui. Dacă aveți nevoie, puteți furniza un alt separator.

Publicitate

De exemplu, să presupunem că trebuie să creați o listă delimitată prin virgulă, o listă împărțită prin două puncte sau orice alt semn de punctuație sau simbol. Delimitatorul este de fapt un șir, așa că puteți folosi mai mult de un caracter.

Vom folosi opțiunea -s (separator). Următoarea comandă va produce o listă delimitată prin virgulă:

 secv s, 6 6 36

Această comandă va folosi două puncte ( : ) ca separator:

 secv -s: 6 6 36

Această comandă îi spune lui seq să folosească două cratime ( - ) ca separator:

 secv. -s-- 6 6 36 

Utilizarea șirurilor de format

Comanda seq acceptă și șiruri de format în stil limbaj C. Acestea vă permit să formatați rezultatul cu mult mai mult control decât specificarea unui separator. Pentru a utiliza un șir de format, utilizați opțiunea -f (format).

Următoarea comandă îi spune lui seq să folosească zerouri pentru a completa rezultatul cu două caractere:

 secv. -f „%02g” 6 

Publicitate

Putem formata șirul cu orice text dorim și plasăm numărul oriunde în șir, după cum urmează:

 seq -f „Numărul %02g într-un șir de format asemănător C” 6 

O modalitate rapidă de a seta căptușeala zero

Cea mai rapidă modalitate de a seta umplutura zero este să utilizați opțiunea -w (lățime egală). Acest lucru îi spune lui seq să folosească zerouri pentru a completa numerele, astfel încât toate să aibă aceeași lățime cu cel mai mare număr.

Următoarea comandă numără de la 0 la 1.000 în pași de 100 și toate numerele vor fi completate cu zerouri:

 secv. -w 0 100 1000 

Cel mai lung număr are patru caractere, astfel încât toate numerele mai înguste sunt completate cu zerouri la acea lățime (chiar și 0 este completat cu patru zerouri).

Conducte secv Into bc

Setând separatorul ca simbol matematic și introducând lista în comanda bc , putem evalua numerele din acea listă.

Următoarea comandă generează o listă de numere separate prin asteriscuri ( * ), începând cu unu și terminând cu șase:

 secv. -s* 6
Publicitate

Dacă introducem lista respectivă în bc , aceasta evaluează lista folosind asteriscurile ( * ) ca simboluri de înmulțire:

 secv -s* 6 | bc

Putem face acest lucru și cu alte simboluri. Comanda de mai jos folosește semnul plus ( + ) pentru a crea o listă în care sunt adăugate toate numerele:

 secv. -s+ 5

Introducem următoarele pentru a-l introduce în bc și evaluăm lista:

 secv -s+ 5 | bc 

Crearea fișierelor cu seq

Comanda touch actualizează marcajele de oră și dată pe fișiere. Dacă fișierul nu există, atingeți îl creează. Putem folosi extinderea liniei de comandă cu touch and seq pentru a crea o colecție de fișiere cu nume tematic, dar numerotate diferit.

Vom crea un set de 10 fișiere cu același nume de bază și un număr diferit (fișier-1.txt, fișier-2.txt și așa mai departe). Introducem următoarele:

 atinge $(seq -f „fișier-%g.txt” 1 10)

Apoi, introducem următoarele pentru a verifica fișierele:

 fisier ls* 

Folosind seq în buclele Bash

Putem folosi seq în scripturile Bash pentru a controla buclele cu zecimale.

Publicitate

Tastați următorul text într-un editor, apoi salvați-l ca „loops.sh”:

 #!/bin/bash

  pentru val în $(seq 5 0,2 6,6); do

  echo „Valoarea este acum: $val”

Terminat

Apoi, introducem următoarele pentru a face noul nostru script executabil:

 chmod +x loop.sh 

Când rulăm scriptul, contorul de bucle este tipărit în fereastra terminalului. Putem apoi tasta următoarele pentru a vedea creșterea numărului de bucle zecimale cu fiecare iterație a buclei:

 ./buclă.sh 

Amintiți-vă că seq poate conta înapoi, de asemenea; îl poți folosi în bucle în același mod.

Frumos și simplu

Un lucru despre seq este că nu există prea multă curbă de învățare. Are o pagină de man înviorător de scurtă, dar o puteți folosi în continuare în moduri interesante.

Deoarece adesea trebuie să creăm rapid fișiere de testare cu dimensiuni realiste, folosim seq cu un șir de format. Apoi redirecționăm rezultatul pentru a crea un fișier care să conțină atâtea rânduri de date fictive câte dorim.

LEGATE: Cele mai bune laptopuri Linux pentru dezvoltatori și entuziaști