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.
Cuprins
Comanda seq
La prima vedere, comanda Linux seq pare a fi ceva ciudat. Vă permite să generați succesiuni de numere repede si gata! 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.
The 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 utilizată cu alte comenzi care folosesc rezultatul său, 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:
seq 6
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:
seq 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:
seq 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:
seq 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:
seq 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.
Introducem următoarele, folosind timp comandă pentru a vedea cât timp durează procesul:
time seq 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 > numbers.txt
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.
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ă:
seq s, 6 6 36
Această comandă va folosi două puncte (:) ca separator:
seq -s: 6 6 36
Această comandă îi spune lui seq să folosească două cratime (-) ca separator:
seq -s-- 6 6 36
Utilizarea șirurilor de format
Comanda seq acceptă și Stil limbaj C șiruri de format. 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:
seq -f "%02g" 6
Putem formata șirul cu orice text dorim și plasăm numărul oriunde în șir, după cum urmează:
seq -f "Number %02g in a C-like format string" 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:
seq -w 0 100 1000
Cel mai lung număr are patru caractere, așa că toate numerele mai înguste sunt completate cu zerouri la acea lățime (chiar și 0 este completat cu patru zerouri).
Conducta secv Into bc
Setând separatorul ca simbol matematic și introducând lista în comanda bc, putem evaluați numerele din acea listă.
Următoarea comandă generează o listă de numere separate prin asteriscuri
seq -s* 6
începând cu unu și terminând cu șase:
seq -s* 6 | bc
Dacă introducem acea listă în bc, aceasta evaluează lista folosind asteriscuri
seq -s+ 5
ca simboluri de înmulțire:
seq -s+ 5 | 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:
Introducem următoarele pentru a-l introduce în bc și evaluăm lista: Crearea fișierelor cu seq Comanda tactilă
actualizează ștampilele de oră și dată
touch $(seq -f "file-%g.txt" 1 10)
pe dosare. 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.
ls file*
Apoi, introducem următoarele pentru a verifica fișierele:
atinge $(seq -f
Folosind seq în buclele Bash
#!/bin/bash for val in $(seq 5 0.2 6.6); do echo "The value is now: $val" done
Putem folosi seq în scripturile Bash pentru a controla buclele cu zecimale.
chmod +x loop.sh
Tastați următorul text într-un editor, apoi salvați-l ca „loops.sh”:
./loop.sh
Apoi, introducem următoarele pentru a face noul nostru script executabil:
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:
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
racoritor de scurt
pagina de manual, 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.