På Linux kan du hitta flera kommandon med ovanliga funktioner. Ett sådant kommando är seq, som matar ut en sekvens av siffror beroende på de angivna argumenten.

Men vad kan du göra med ett kommandoradsverktyg som kastar en massa siffror åt dig? Du får reda på det i den här guiden.

Vad är seq-kommandot?

Som nämnts ovan genererar seq-kommandot i Linux snabbt en sekvens av numeriska tecken. Användare kan skicka argument till kommandot för att skapa olika kombinationer av nummer. Du kan till exempel få en inkrementerad lista genom att helt enkelt skicka ett ytterligare argument till seq.

Vad är dock den praktiska användningen av kommandot? Även om seq kanske inte verkar vara ett kraftfullt verktyg i sin helhet, kan du dra nytta av kommandot genom att implementera det med andra Linux-verktyg. Du kan också använda seq in bash-skript att avslöja sin sanna kraft.

Hur man använder seq i Linux

Seq tar bara några få argument, vilket gör det till ett lättlärt verktyg för alla.

Grundläggande syntax

instagram viewer

Den grundläggande syntaxen för kommandot är:

seq alternativnummer

...var alternativ är flaggorna som du kan ange för att åberopa olika metoder för kommandot och tal är argumenten du skickar för att generera den numeriska sekvensen.

Skapa en lista med nummer

Seq-argument följer inmatningsformatet nedan:

sek senast
första första sist
seq första steget sist

När du bara anger ett nummer, tolkar seq det som den övre gränsen för listan och genererar en sekvens som börjar från en upp till det angivna numret.

seq 5

Det ovannämnda kommandot kommer att mata ut följande:

1
2
3
4
5

När seq tar emot två siffror som ingång tolkar den dem som den nedre gränsen och övre gränsen för sekvensen. Så här genererar du en lista med siffror från fyra till åtta:

sekvens 4 8

Produktion:

4
5
6
7
8

Men när du skickar tre siffror till kommandot, tolkar det andra argumentet som stegnummer. Till exempel:

sek 3 2 13

Det ovannämnda kommandot kommer att mata ut en lista med nummer som börjar från tre upp till 13 med ett steg på två.

3
5
7
9
11
13

Lägg till en avgränsare mellan siffror

Som standard använder seq ett nytt linjetecken som avgränsare för listan. Detta är anledningen till att varje nummer i listan står på en separat rad.

Du kan ändra detta standardbeteende och använda en anpassad separator med hjälp av -s flagga. Att använda Period (.) karaktär som separator:

seq -s. 3 7

Produktion:

3.4.5.6.7

Tänk på att vissa karaktärer gillar Tilde (~) måste ingå i offerten. Detta beror på att terminalen använder Tilde karaktär för att beteckna /home katalog, och det skulle återspeglas i utdata om du inte lägger till offerten.

seq -s ~ 3 7

Produktion:

3 / hem / 4 / hem / 5 / hem / 6 / hem / 7

Å andra sidan, när du slår in avgränsaren med citat:

seq -s '~' 3 7

Produktion:

3~4~5~6~7

Justera utdataformatet

Du kan också ändra formatet för utgångssekvensen med -f flagga. Som standard extraherar seq formatformatet från användarinmatningen. Om du till exempel anger siffrorna 0,1 och 0,5, kommer standardutmatningen att ha ett flytformatnummerformat.

seq 0,1 0,5

Produktion:

0.1
0.2
0.3
0.4
0.5

Du kan ange ett anpassat utdataformat med hjälp av olika konverteringsspecifikationer som% a,% e,% f,% g,% A,% E,% F och% G.

Du kan använda % f specifier om du vill att utdata ska följa ett flytformatnummerformat.

seq-f% f 4 7

Produktion:

4.000000
5.000000
6.000000
7.000000

För att ändra precisionen upp till två decimaler:

seq -f% 0,2f 4 7

Produktion:

4.00
5.00
6.00
7.00

Du kan också omvandla utdata helt genom att ange en utdatamall. Till exempel för att få en lista över alla IP-adresser som börjar med 192.168.5.x:

seq -f 192.168.5.% g 1 233

Produktion:

För att lägga till stoppning i utgången kan du använda -w flagga. De -w flaggan bibehåller bredden på utmatningen i enlighet med det största angivna antalet.

Att generera en sekvens av siffror mellan en och 1 000 med ett steg på 100 samtidigt som du håller en konstant bredd:

seq -w 1100 1000

Produktion:

0001
0101
0201
0301
0401
0501
0601
0701
0801
0901

Få kommandoradshjälp

Medan seq är lätt att använda, kan användare ibland känna behov av kolla kommandot på den manuella sidan. De --hjälp flaggan visar seq mansidan:

sek - hjälp

Produktion:

Praktiska exempel

Som redan nämnts används seq främst med andra Linux-kommandon, till exempel touch och expr.

Utför matematiska operationer

Om du snabbt vill lägga till eller subtrahera ett visst antal siffror kan du göra det enkelt genom att använda seq inuti expr, vilket är ett Linux-kommando som behandlar ingången som ett uttryck och visar motsvarande utdata.

Så här lägger du till alla siffror mellan en och 100:

expr `(seq -s" + "1100)`

Seq-kommandot genererar en utdata enligt följande:

1 + 2 + 3 + 4 + 5 + 6...

Expr behandlar det som ett inmatningsuttryck och matar ut lösningen.

5050

Du kan utföra andra matematiska operationer genom att helt enkelt ersätta avgränsaren i seq-kommandot med andra operatorer.

Skapa snabbt flera filer

Om du vill skapa flera filer på Linux vars namn följer ett liknande mönster kan du göra det enkelt med beröringskommandot och seq.

Till exempel för att skapa 10 filer med namnet fil-x.txt, var x är ett tal från en till 10:

peka på $ (seq -f "fil% g.txt" 1 10)

Touch skapar filerna åt dig på ett ögonblick.

Implementering av sekvenser i skript

Tänk på att du skriver en nätverksskannerverktyg som Nmap i bash kanske du vill få en lista över alla öppna portar i ett nätverk. Men för det måste du pinga varje port (totalt 65535) och analysera svaret.

För att spara tid kan du välja att använda seq och skapa en lista med IP-adresser och portkombinationer som du kan använda i ditt skript.

Låt oss anta att du vill få en lista över alla portar på en enhet med IP-adressen 1.2.3.4. Här är ett snabbt kommando för att generera önskad effekt:

seq -f 1.2.3.4:%g 1 65535

Produktion:

Du kan sedan använda denna utgång som en lista och gå igenom den, kontrollera varje port med ditt skript och analysera om den är öppen eller inte.

Hur snabbt genererar sekvensen siffrorna?

Du kanske tänker om du kan uppnå liknande resultat med en for loop in bash, varför välja seq för uppgiften? Detta beror på att den verkliga kraften i seq ligger i dess hastighet. Seq är snabbare än något annat kommando som genererar en sekvens av siffror på Linux.

Du kan även testa dess hastighet med tidsverktyget på Linux. Låt oss se hur mycket tid det tar för seq att generera en lista med en miljon nummer som börjar med ett.

tid seq 1000000

Om du tittar på utdata nedan ser du att det bara tog seq cirka fyra sekunder att generera en lista med en miljon nummer.

Kraften i Linux-kommandoraden

Seq är inte det enda verktyget i Linux som fokuserar starkt på att leverera snabba och exakta resultat. Medan du kan skapa en lista med nummer med a for loop in bash, det är inte en rekommenderad praxis med tanke på hur flammande snabb seq verkligen är.

Linux-kommandoraden ger dig mer kontroll över operativsystemet och dess funktioner, vilket också är en anledning till att du börja använda terminalen över GUI idag.

E-post
5 skäl att välja Linux Terminal över GUI

Linux-kommandoraden har hög mark när det gäller prestanda, kontroll och användarvänlighet.

Läs Nästa

Relaterade ämnen
  • Linux
Om författaren
Deepesh Sharma (65 artiklar publicerade)

Deepesh är Junior Editor för Linux på MUO. Han har skrivit informationsinnehåll på internet i över 3 år. På fritiden tycker han om att skriva, lyssna på musik och spela gitarr.

Mer från Deepesh Sharma

Prenumerera på vårt nyhetsbrev

Gå med i vårt nyhetsbrev för tekniska tips, recensioner, gratis e-böcker och exklusiva erbjudanden!

Ett steg till…!

Bekräfta din e-postadress i e-postmeddelandet som vi just skickade till dig.

.