El Linux seq
Il comando genera elenchi di numeri in un batter d'occhio. Ma, Come può essere implementata questa funzionalità?? Ti mostreremo come seq può aiutarti.
Il comando seq
A prima vista, Linux seq
Il comando sembra un po' strano. Ti permette di generare sequenze numeriche veloce e pronto! Nonostante questo, la parola chiave qui è “rapidamente”. In un momento, vedrai quanto velocemente può essere eseguito questo piccolo comando.
Indipendentemente da come vengono generati, Quanto è utile una lista di numeri? il seq
Il comando è stato aggiunto all'ottava edizione di Unix in 1985. Ci sono stato da allora, quindi devi fare qualcosa di utile.
il Filosofia Unix è che è pieno di piccole utilità che fanno una cosa e la fanno bene. Uno dei principi centrali di questa filosofia è scrivere programmi che accettino informazioni da altri programmi.. Comunque, Ciò significa anche che questi programmi devono generare un output che può essere utilizzato come input da altri programmi..
il seq
Il comando entra in gioco quando viene utilizzato con altri comandi che utilizzano il suo output, tramite la pipeline o l'espansione della riga di comando.
Generazione di elenchi di base
Se lanci seq
con un singolo numero come parametro della riga di comando, conta da uno a quel numero. Successivamente stampa i numeri nella finestra del terminale, un numero per riga, come mostrato di seguito:
seguito 6
Se digiti due numeri sulla riga di comando, il primo sarà il numero iniziale e il secondo sarà il numero finale, come mostrato di seguito:
seguito 4 10
Puoi determinare la dimensione del passo includendo un terzo numero. Si trova tra i numeri di inizio e fine. Scriviamo quanto segue per chiedere seq
per creare un elenco di numeri che iniziano con sei, finito in 48 e usa un passo di sei:
seguito 6 6 48
Contando all'indietro
Possiamo anche chiedere seq
per creare un elenco di numeri dal più alto al più basso. Nonostante questo, per farlo, dobbiamo fare un passo che è negativo.
Il comando seguente produce un elenco che conta da 24 un 12 a passi di 6 perché scriviamo il passo come un numero negativo:
seguito 24 -6 12
Contare con i decimali
I numeri di partenza, final e step possono anche essere decimali. Se uno dei numeri è decimale, anche gli altri sono trattati come decimali. Il comando seguente genera un elenco di numeri con un passo di 0.2:
seguito 1 0.2 2
La velocità di seq
seq
è incredibilmente veloce; l'unico collo di bottiglia è il tempo necessario per digitare il comando nella finestra del terminale. Per testare la tua velocità, chiediamo un elenco di 250.000 numeri.
Scriviamo quanto segue, usando il time
comando per vedere quanto tempo impiega la procedura per completare:
sequenza temporale 250000
I risultati vengono visualizzati sotto l'elenco. Anche sul nostro PC di prova a potenza moderata, seq
è sorprendentemente veloce.
L'intero elenco è stato creato e scritto sullo schermo in circa 1/3 secondo. Se reindirizziamo l'elenco a un file, possiamo anche evitare il sovraccarico di scrittura nella finestra del terminale.
Per farlo, scriviamo quanto segue:
sequenza temporale 250000 > numeri.txt
Il tempo necessario per completare l'elenco e creare il file è ora di circa 1/7 secondo.
Utilizzo di un separatore
Un carattere di nuova riga è il carattere predefinito che viene visualizzato tra ogni numero in un elenco. Ecco perché appaiono come un elenco verticale, con ogni numero sulla propria riga. Se richiesto, può fornire un altro separatore.
Come esempio, supponiamo che tu debba creare un elenco delimitato da virgole, un elenco diviso da due punti o qualsiasi altro segno di punteggiatura o simbolo. Il delimitatore è in realtà una stringa, quindi puoi usare più di un carattere.
Useremo il -s
(separatore) opzione. Il seguente comando produrrà un elenco delimitato da virgole:
seq s, 6 6 36
Questo comando utilizzerà i due punti (:
) come separatore:
seq -s: 6 6 36
Questo comando dice seq
usa due trattini-
) come separatore:
seq -s-- 6 6 36
Usa stringhe di formato
il seq
anche il comando è supportato Stile della lingua C stringhe di formato. Questi consentono di formattare l'output con un controllo molto maggiore rispetto alla semplice specifica di un separatore.. Per usare una stringa di formato, utilizzare il -f
opzione (formato).
Il seguente comando dice seq
usare gli zeri per riempire l'output a due caratteri:
seq -f "%02G" 6
Possiamo formattare la stringa con qualsiasi testo che ci piace e posizionare il numero ovunque nella stringa, nel prossimo modo:
seq -f "Numero g in una stringa di formato simile a C" 6
Un modo rapido per impostare zero padding
Il modo più rapido per determinare lo zero padding è usare il -w
(uguale larghezza) opzione. Questo dice seq
usa gli zeri per riempire i numeri, in modo che siano tutti della stessa larghezza del numero più grande.
Il seguente comando conta 0 un 1000 a passi di 100, e tutti i numeri saranno riempiti con zeri:
seq -w 0 100 1000
Il numero più lungo ha quattro caratteri, quindi tutti i numeri più stretti vengono riempiti con zeri fino a quella larghezza (inclusivo 0 è riempito con quattro zeri).
Tubo seq in bc
Determinando il separatore come simbolo matematico e convogliando l'elenco nel bc
comando, noi possiamo valutare i numeri in quella lista.
Il seguente comando genera un elenco di numeri separati da asterischi (*
), iniziando da uno e finendo con sei:
seq -s* 6
Se nutriamo quella lista su bc
, valuta la lista usando gli asterischi (*
) come simboli di moltiplicazione:
seq -s* 6 | avanti Cristo
Possiamo farlo anche con altri simboli. Il seguente comando utilizza un segno più (+
) per creare un elenco in cui vengono aggiunti tutti i numeri:
seq -s+ 5
Abbiamo scritto quanto segue per incanalarlo in bc
e sfoglia la lista:
seq -s+ 5 | avanti Cristo
Crea file con seq
il touch
comando aggiorna data e ora nei file. Se il file non esiste, tocca crealo. Possiamo usare l'espansione della riga di comando con touch
e seq
per creare una raccolta di file con nomi tematici ma numerati in modo diverso.
Creeremo un set di 10 file con lo stesso nome di base e un numero diverso (file-1.txt, file-2.txt, eccetera.). Scriviamo quanto segue:
tocco $(seq -f "file-%g.txt" 1 10)
Successivamente, Scriviamo quanto segue per controllare i file:
ls file*
Utilizzo di seq in Bash Loops
Possiamo usare seq
negli script Bash per gestire i cicli con i decimali.
Digitare il testo riportato di seguito in un editor, quindi salvarlo con nome “loops.sh”:
#!/bin/bash for val in $(seguito 5 0.2 6.6); do echo "Il valore è ora: $Val" fatto
Prossimo, Scriviamo quanto segue in modo che il nostro nuovo script sia eseguibile:
chmod +x loop.sh
Quando eseguiamo lo script, il contatore di loop viene stampato nella finestra del terminale. Successivamente, possiamo scrivere quanto segue per vedere che il contatore del ciclo decimale aumenta ad ogni iterazione del ciclo:
./loop.sh
Ricordalo seq
puoi anche contare alla rovescia; puoi usarlo in loop allo stesso modo.
Bello e semplice
Una cosa su seq
è che non c'è molta curva di apprendimento. Avere un piacevolmente breve man
pagina, ma puoi ancora usarlo in modi interessanti.
Perché spesso abbiamo bisogno di creare rapidamente file di test con dimensioni realistiche, noi usiamo seq
con una stringa di formato. Successivamente reindirizziamo l'output per creare un file che contenga tutte le righe di dati fittizi che desideriamo.