A Linux seq parancs egy szempillantás alatt számlistákat generál. De hogyan lehet ezt a funkciót a gyakorlatban hasznosítani? Megmutatjuk, hogyan jöhet jól neked a seq.
Tartalomjegyzék
A következő parancs
Első pillantásra a Linux seq parancs valami furcsaságnak tűnik. Lehetővé teszi a generálást számsorozatok gyorsan és ennyi! A kulcsszó itt azonban a „gyorsan”. Egy pillanat múlva látni fogja, milyen gyorsan fut ez a kis parancs.
Függetlenül attól, hogy hogyan jönnek létre, mennyire hasznos egy számlista? A seq parancsot 1985-ben adták hozzá a Unix 8. kiadásához. Azóta is ott van, tehát valami érdemlegeset kell tennie.
A Unix filozófiája az, hogy tele van apró segédprogramokkal, amelyek egy dolgot csinálnak, és jól csinálják. Ennek a filozófiának az egyik központi tétele, hogy olyan programokat írjunk, amelyek más programoktól fogadnak bemenetet. Ez természetesen azt is jelenti, hogy ezeknek a programoknak olyan kimenetet kell generálniuk, amelyet más programok bemenetként használhatnak.
A seq parancs akkor válik önállóvá, ha más parancsokkal együtt használjuk, amelyek a kimenetét használják, akár csöveken, akár parancssori kiterjesztésen keresztül.
Alap lista generálás
Ha egyetlen számmal indítja el a seq-et parancssori paraméterként, akkor az egytől a számig számol. Ezután kiírja a számokat a terminálablakban, soronként egy számot, az alábbiak szerint:
seq 6
Ha két számot ír be a parancssorba, az első a kezdőszám, a második pedig a végszám lesz, amint az alább látható:
seq 4 10
A lépések méretét egy harmadik szám megadásával állíthatja be. A kezdő és a záró számok között található. A következőt írjuk be, hogy megkérdezzük a seq-et, hogy létrehozzunk egy hatossal kezdődő, 48-ra végződő és hatos lépést használó számlistát:
seq 6 6 48
Visszafelé számolás
Azt is megkérhetjük a seq-re, hogy hozzon létre egy listát a legmagasabbtól a legalacsonyabbig. Ehhez azonban meg kell adnunk egy negatív lépést.
A következő parancs egy listát hoz létre, amely 24-től 12-ig számol 6-os lépésekben, mert a lépést negatív számként írjuk be:
seq 24 -6 12
Számlálás tizedesjegyekkel
A kezdő-, vég- és lépésszámok tizedesjegyek is lehetnek. Ha valamelyik szám tizedes, a többit is tizedesjegyként kezeli a rendszer. A következő parancs számlistát állít elő 0,2 lépéssel:
seq 1 0.2 2
A Seq
A seq hihetetlenül gyors – az egyetlen szűk keresztmetszet az, hogy mennyi időbe telik a parancs beírása a terminálablakban. A sebesség teszteléséhez kérjünk egy 250 000 számból álló listát.
A következőt gépeljük be a idő parancsot, hogy megtudja, mennyi ideig tart a folyamat befejeződése:
time seq 250000
Az eredmények a lista alatt jelennek meg. Még a közepes teljesítményű teszt-PC-n is meglepően gyors a szekvencia.
A teljes lista körülbelül 1/3 másodperc alatt létrejött és a képernyőre íródott. Ha átirányítjuk a listát egy fájlba, még a terminálablakban való gépelés túlzott terhét is elkerülhetjük.
Ehhez a következőket írjuk be:
time seq 250000 > numbers.txt
A lista befejezéséhez és a fájl létrehozásához szükséges idő körülbelül 1/7 másodperc.< /p>
Elválasztó használataAz új sorkarakter az alapértelmezett karakter, amely a listában az egyes számok között jelenik meg. Ezért függőleges listaként jelennek meg, minden szám a saját sorában. Ha szükséges, biztosíthat másik elválasztót is.
Tegyük fel például, hogy létre kell hoznia egy vesszővel tagolt listát, kettőspontokkal elosztott listát vagy bármilyen más írásjelet vagy szimbólumot. A határoló valójában egy karakterlánc, így több karaktert is használhat.
Az -s (elválasztó) opciót fogjuk használni. A következő parancs egy vesszővel tagolt listát hoz létre:
seq s, 6 6 36
Ez a parancs kettőspontot (:) használ elválasztóként:
seq -s: 6 6 36
Ez a parancs megmondja a seq-nek, hogy két kötőjelet (-) használjon elválasztóként:
seq -s-- 6 6 36
Format Strings használata
A seq parancs is támogatja C nyelvi stílusban formátumú karakterláncok. Ezek lehetővé teszik a kimenet formázását, sokkal több vezérléssel, mint egy elválasztó megadásával. Formázási karakterlánc használatához használja a -f (formátum) kapcsolót.
A következő parancs arra utasítja a seq-t, hogy nullákat használjon a kimenet két karakterre való kiegészítéséhez:
seq -f "%02g" 6
A karakterláncot tetszőleges szöveggel formázhatjuk, és a számot bárhová elhelyezhetjük a karakterláncban az alábbiak szerint:
seq -f "Number %02g in a C-like format string" 6
Gyors módszer a padding nulla beállítására
A nulla kitöltés beállításának leggyorsabb módja a -w (egyenlő szélességű) opció használata. Ez azt utasítja a seq-nek, hogy nullákat használjon a számok kitöltéséhez, így mindegyik ugyanolyan széles, mint a legnagyobb szám.
A következő parancs 0-tól 1000-ig számol 100-as lépésekkel, és minden szám nullával lesz kitöltve:
seq -w 0 100 1000
A leghosszabb szám négy karakterből áll, így minden keskenyebb szám nullákkal lesz kitöltve az adott szélességig (még a 0-t is négy nullára tölti ki).
Csővezetékek seq Into bc
Ha az elválasztót matematikai szimbólumként állítjuk be, és a listát beírjuk a bc parancsba, ezt megtehetjük értékelje a listán szereplő számokat.
A következő parancs létrehozza a csillagokkal elválasztott számok listáját
seq -s* 6
egytől kezdődően és hattal végződve:
seq -s* 6 | bc
Ha ezt a listát betápláljuk a bc-be, akkor a csillagok segítségével értékeli ki a listát
seq -s+ 5
szorzószimbólumként:
seq -s+ 5 | bc
Ezt más szimbólumokkal is megtehetjük. Az alábbi parancs pluszjelet (+) használ egy lista létrehozásához, amelyben az összes szám hozzáadásra kerül:
Beírjuk a következőket, hogy ezt a bc-be húzzuk, és kiértékeljük a listát: Fájlok létrehozása a következővel Az érintés parancsa
frissíti az idő- és dátumbélyegzőket
touch $(seq -f "file-%g.txt" 1 10)
fájlokon. Ha a fájl nem létezik, a megérintéssel hozza létre. A touch és a seq parancssori kibővítés segítségével tematikus elnevezésű, de eltérő számozású fájlok gyűjteményét hozhatjuk létre.
ls file*
Ezután a következőket írjuk be a fájlok ellenőrzéséhez:
érintse meg a $(seq -f
Seq használata a Bash Loopsban
#!/bin/bash for val in $(seq 5 0.2 6.6); do echo "The value is now: $val" done
A Bash szkriptekben a seq-et használhatjuk a ciklusok tizedesjegyekkel történő szabályozására.
chmod +x loop.sh
Írja be a következő szöveget egy szerkesztőbe, majd mentse el „loops.sh” néven:
./loop.sh
Ezután a következőket írjuk be, hogy az új szkriptünket végrehajthatóvá tegyük:
Amikor futtatjuk a szkriptet, a ciklusszámláló kinyomtatásra kerül a terminál ablakában. Ezután beírhatjuk a következőket, hogy meglássuk, hogy a decimális hurokszámláló a ciklus minden iterációjával növekszik:
Ne feledje, hogy a seq visszafelé is számolhat; ugyanúgy használhatod ciklusokban. Szép és egyszerű Egy dolog a seq-ben, hogy nincs sok tanulási görbe. Van egy
üdítően rövid