Sådan bruger du kommandoen seq på Linux

Linux seq-kommandoen genererer lister over tal på et øjeblik. Men hvordan kan denne funktionalitet bruges i praksis? Vi viser dig, hvordan seq kan være nyttigt for dig.

Følgende kommando

Ved første øjekast ser Linux seq-kommandoen ud til at være noget af en særhed. Det giver dig mulighed for at generere rækker af tal hurtigt og det er det! Nøgleordet her er dog “hurtigt”. Om et øjeblik vil du se, hvor hurtigt denne lille kommando kan køre.

Uanset hvordan de genereres, hvor nyttig er en liste over tal dog? Seq-kommandoen blev føjet til den 8. udgave af Unix i 1985. Den har været der lige siden, så den må gøre noget værd.

Det Unix filosofi er, at den er fuld af små hjælpeprogrammer, der gør én ting og gør det godt. En af de centrale principper i denne filosofi er at skrive programmer, der accepterer input fra andre programmer. Det betyder selvfølgelig også, at disse programmer skal generere output, der kan bruges som input af andre programmer.

Kommandoen seq kommer til sin ret, når den bruges sammen med andre kommandoer, der gør brug af dens output, enten gennem pipes eller kommandolinjeudvidelse.

Grundlæggende listegenerering

Hvis du starter seq med et enkelt tal som kommandolinjeparameter, tæller det fra én til det tal. Den udskriver derefter tallene i terminalvinduet, et tal pr. linje, som vist nedenfor:

seq 6

Det

Hvis du skriver to tal på kommandolinjen, vil det første være startnummeret, og det andet vil være slutnummeret, som vist nedenfor:

seq 4 10

Du kan indstille en trinstørrelse ved at inkludere et tredje tal. Den sidder mellem start- og slutnumrene. Vi skriver følgende for at bede seq om at oprette en liste over tal, der starter med seks, slutter på 48 og bruger et trin på seks:

seq 6 6 48

Tæller bagud

Vi kan også bede seq om at oprette en liste over tal fra højeste til laveste. For at gøre det skal vi imidlertid give et skridt, der er negativt.

  Sådan opdeles PDF-filer fra Linux-terminalen ved hjælp af PDFtk

Den følgende kommando producerer en liste, der tæller fra 24 til 12 i trin af 6, fordi vi skriver trinnet som et negativt tal:

seq 24 -6 12

Tæller med decimaler

Start-, slut- og trinnumrene kan også være decimaler. Hvis nogen af ​​tallene er en decimal, behandles de andre også som decimaler. Følgende kommando genererer en liste over tal med et trin på 0,2:

seq 1 0.2 2

Hastigheden af ​​seq

seq er lynende hurtig – den eneste flaskehals er den tid, det tager dig at skrive kommandoen i terminalvinduet. For at teste dens hastighed, lad os bede om en liste med 250.000 numre.

Vi skriver følgende ved hjælp af tid kommando for at se, hvor lang tid processen tager at fuldføre:

time seq 250000

Resultaterne vises under listen. Selv på vores moderat drevne test-pc er seq overraskende hurtig.

Hele listen blev oprettet og skrevet til skærmen på cirka 1/3 af et sekund. Hvis vi omdirigerer listen til en fil, kan vi endda undgå overhead ved at skrive i terminalvinduet.

For at gøre det skriver vi følgende:

time seq 250000 > numbers.txt

time seq 250000 > numbers.txt i et terminalvindue.”  width=”646″ højde=”147″ onload=”pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);”  onerror=”this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);”></p>
<div style=

Tiden det tager at færdiggøre listen og oprette filen er nu omkring 1/7 af et sekund.< /p>

Brug af en separator

Et nyt linjetegn er standardtegn, der vises mellem hvert tal på en liste. Det er derfor, de vises som en lodret liste, med hvert tal på sin egen linje. Hvis du har brug for det, kan du give en anden separator.

Lad os for eksempel sige, at du skal oprette en kommasepareret liste, en liste divideret med koloner eller et hvilket som helst andet tegnsætningstegn eller symbol. Afgrænsningstegnet er faktisk en streng, så du kan bruge mere end ét tegn.

Vi bruger muligheden -s (separator). Følgende kommando vil producere en kommasepareret liste:

seq s, 6 6 36

Denne kommando vil bruge et kolon (:) som separator:

seq -s: 6 6 36

Denne kommando fortæller seq at bruge to bindestreger (-) som separator:

seq -s-- 6 6 36

Brug af formatstrenge

Seq-kommandoen understøtter også C sproglig stil formatere strenge. Disse giver dig mulighed for at formatere output med meget mere kontrol end blot at angive en separator. For at bruge en formatstreng skal du bruge -f (format) muligheden.

Følgende kommando fortæller seq at bruge nuller til at fylde output til to tegn:

seq -f "%02g" 6

seq -f

Vi kan formatere strengen med enhver tekst, vi kan lide, og placere tallet hvor som helst i strengen, som følger:

seq -f "Number %02g in a C-like format string" 6

seq -f

En hurtig måde at indstille nulpolstring på

Den hurtigste måde at indstille nul-polstring på er at bruge indstillingen -w (lige bredde). Dette fortæller seq at bruge nuller til at udfylde tallene, så de alle har samme bredde som det største tal.

Følgende kommando tæller fra 0 til 1.000 i trin af 100, og alle tal vil blive udfyldt med nuller:

seq -w 0 100 1000

Det længste tal tager fire tegn, så alle smallere tal er polstret med nuller til den bredde (selv 0 er polstret til fire nuller).

  Sådan installeres brugerdefinerede temaer og ikoner i Linux

Piping seq Into bc

Ved at indstille separatoren som et matematisk symbol og overføre listen til bc-kommandoen, kan vi vurdere tallene på listen.

Den følgende kommando genererer en liste over tal adskilt af stjerner

seq -s* 6

der starter ved et og slutter med seks:

seq -s* 6 | bc

Hvis vi fører den liste ind i bc, evaluerer den listen ved hjælp af stjernerne

seq -s+ 5

som multiplikationssymboler:

seq -s+ 5 | bc

Vi kan også gøre dette med andre symboler. Kommandoen nedenfor bruger et plustegn (+) til at oprette en liste, hvor alle tallene tilføjes:

Vi skriver følgende for at overføre det til bc og evaluere listen: Oprettelse af filer med seq Berøringskommandoen

opdaterer tids- og datostempler

touch $(seq -f "file-%g.txt" 1 10)

på filer. Hvis filen ikke findes, opretter den ved tryk. Vi kan bruge kommandolinjeudvidelse med touch og seq til at skabe en samling af tematisk navngivne, men forskelligt nummererede filer.

ls file*

Vi opretter et sæt på 10 filer med det samme basisnavn og et andet nummer (fil-1.txt, fil-2.txt, og så videre).  Vi skriver følgende:

Derefter skriver vi følgende for at kontrollere filerne:

tryk på $(seq -f

Brug af seq i Bash Loops

#!/bin/bash

  for val in $(seq 5 0.2 6.6); do

  echo "The value is now: $val"

done

Vi kan bruge seq i Bash-scripts til at styre loops med decimaler.

chmod +x loop.sh

Indtast følgende tekst i en editor, og gem den derefter som “loops.sh”:

./loop.sh

Dernæst skriver vi følgende for at gøre vores nye script eksekverbart:

Når vi kører scriptet, udskrives loop-tælleren i terminalvinduet. Vi kan derefter skrive følgende for at se decimalløkketælleren stige med hver iteration af løkken:

Husk at seq også kan tælle baglæns; du kan bruge det i sløjfer på samme måde. Fint og enkelt En ting ved seq er, at der ikke er meget af en indlæringskurve. Den har en

forfriskende kort

man page, men du kan stadig bruge den på interessante måder. Fordi vi ofte hurtigt skal lave testfiler med realistiske størrelser, bruger vi seq med en formatstreng. Vi omdirigerer derefter outputtet for at skabe en fil, der indeholder så mange linjer med dummy-data, som vi ønsker.