So verwenden Sie den seq-Befehl unter Linux
Veröffentlicht: 2022-01-29 Der Linux-Befehl seq
erzeugt im Handumdrehen Zahlenlisten. Doch wie lässt sich diese Funktionalität praktisch umsetzen? Wir zeigen Ihnen, wie seq für Sie nützlich sein könnte.
Der seq-Befehl
Auf den ersten Blick wirkt der Linux-Befehl seq
etwas seltsam. Damit können Sie schnell Zahlenfolgen generieren und das war's! Das Schlüsselwort hier ist jedoch „schnell“. Gleich werden Sie sehen, wie schnell dieser kleine Befehl laufen kann.
Unabhängig davon, wie sie generiert werden, wie nützlich ist eine Liste mit Zahlen? Der Befehl seq
wurde 1985 zur 8. Ausgabe von Unix hinzugefügt. Seitdem ist er immer da, also muss er etwas Sinnvolles tun.
Die Philosophie von Unix ist, dass es voller kleiner Dienstprogramme ist, die eine Sache tun und es gut machen. Einer der zentralen Grundsätze dieser Philosophie besteht darin, Programme zu schreiben, die Eingaben von anderen Programmen akzeptieren. Das bedeutet natürlich auch, dass diese Programme Output erzeugen müssen, der von anderen Programmen als Input verwendet werden kann.
Der seq
-Befehl spielt seine Stärken aus, wenn er mit anderen Befehlen verwendet wird, die seine Ausgabe verwenden, entweder über Pipes oder eine Befehlszeilenerweiterung.
Grundlegende Listenerstellung
Wenn Sie seq
mit einer einzelnen Zahl als Befehlszeilenparameter starten, zählt es von eins bis zu dieser Zahl. Anschließend werden die Zahlen im Terminalfenster ausgegeben, eine Zahl pro Zeile, wie unten gezeigt:
Folge 6
Wenn Sie zwei Zahlen in die Befehlszeile eingeben, ist die erste die Startnummer und die zweite die Endnummer, wie unten gezeigt:
Folge 4 10
Sie können eine Schrittweite festlegen, indem Sie eine dritte Zahl angeben. Es befindet sich zwischen den Start- und Endnummern. Wir geben Folgendes ein, um seq
, eine Liste von Zahlen zu erstellen, die mit sechs beginnt, bei 48 endet und einen Sechserschritt verwendet:
Folge 6 6 48
Rückwärts zählen
Wir können seq
auch bitten, eine Liste von Zahlen von der höchsten zur niedrigsten zu erstellen. Dazu müssen wir jedoch einen negativen Schritt liefern.
Der folgende Befehl erzeugt eine Liste, die in 6er-Schritten von 24 bis 12 zählt, da wir den Schritt als negative Zahl eingeben:
Folge 24 -6 12
Zählen mit Dezimalstellen
Die Start-, End- und Schrittnummern können auch Dezimalzahlen sein. Wenn eine der Zahlen eine Dezimalzahl ist, werden die anderen ebenfalls als Dezimalzahlen behandelt. Der folgende Befehl erzeugt eine Liste von Zahlen mit einer Schrittweite von 0,2:
Folge 1 0,2 2
Die Geschwindigkeit von seq
seq
ist unglaublich schnell – der einzige Engpass ist die Zeit, die Sie brauchen, um den Befehl in das Terminalfenster einzugeben. Um seine Geschwindigkeit zu testen, fragen wir nach einer Liste mit 250.000 Nummern.
Wir geben Folgendes ein und verwenden den Befehl time
, um zu sehen, wie lange der Vorgang dauert, bis er abgeschlossen ist:
Zeitfolge 250000
Die Ergebnisse werden unterhalb der Liste angezeigt. Selbst auf unserem Test-PC mit mäßiger Leistung ist seq
überraschend schnell.
Die gesamte Liste wurde in etwa 1/3 Sekunde erstellt und auf den Bildschirm geschrieben. Wenn wir die Liste in eine Datei umleiten, können wir sogar den Aufwand für das Eintippen im Terminalfenster vermeiden.
Dazu geben wir Folgendes ein:
Zeitfolge 250000 > numbers.txt
Die Zeit, die zum Vervollständigen der Liste und zum Erstellen der Datei benötigt wird, beträgt jetzt etwa 1/7 Sekunde.
Verwenden eines Trennzeichens
Ein Zeilenumbruchzeichen ist das Standardzeichen, das zwischen jeder Nummer in einer Liste angezeigt wird. Deshalb werden sie als vertikale Liste angezeigt, wobei jede Zahl in einer eigenen Zeile steht. Bei Bedarf können Sie ein weiteres Trennzeichen angeben.
Angenommen, Sie müssen eine durch Kommas getrennte Liste, eine durch Doppelpunkte getrennte Liste oder ein anderes Satzzeichen oder Symbol erstellen. Das Trennzeichen ist eigentlich eine Zeichenfolge, sodass Sie mehr als ein Zeichen verwenden können.
Wir verwenden die Option -s
(Trennzeichen). Der folgende Befehl erzeugt eine durch Kommas getrennte Liste:
seq s, 6 6 36
Dieser Befehl verwendet einen Doppelpunkt ( :
) als Trennzeichen:
seq -s: 6 6 36
Dieser Befehl weist seq
an, zwei Bindestriche ( -
) als Trennzeichen zu verwenden:
seq -s-- 6 6 36
Verwenden von Formatzeichenfolgen
Der Befehl seq
unterstützt auch Formatzeichenfolgen im Stil der C-Sprache. Diese ermöglichen es Ihnen, die Ausgabe mit viel mehr Kontrolle zu formatieren, als nur ein Trennzeichen anzugeben. Um eine Formatzeichenfolge zu verwenden, verwenden Sie die Option -f
(Format).
Der folgende Befehl weist seq
an, Nullen zu verwenden, um die Ausgabe auf zwei Zeichen aufzufüllen:
seq -f "%02g" 6
Wir können die Zeichenfolge mit beliebigem Text formatieren und die Zahl wie folgt an einer beliebigen Stelle in der Zeichenfolge platzieren:
seq -f "Nummer %02g in einem C-ähnlichen Formatstring" 6
Ein schneller Weg, um Zero Padding festzulegen
Der schnellste Weg, um das Auffüllen mit Nullen festzulegen, ist die Verwendung der Option -w
(gleiche Breite). Dies weist seq
an, die Zahlen mit Nullen aufzufüllen, damit sie alle dieselbe Breite wie die größte Zahl haben.
Der folgende Befehl zählt von 0 bis 1.000 in 100er-Schritten, und alle Zahlen werden mit Nullen aufgefüllt:
seq -w 0 100 1000
Die längste Zahl benötigt vier Zeichen, daher werden alle schmaleren Zahlen mit Nullen auf diese Breite aufgefüllt (selbst 0 wird mit vier Nullen aufgefüllt).
Piping seq In bc
Indem wir das Trennzeichen als mathematisches Symbol festlegen und die Liste in den bc
Befehl leiten, können wir die Zahlen in dieser Liste auswerten.
Der folgende Befehl generiert eine durch Sternchen ( *
) getrennte Liste von Zahlen, die bei eins beginnt und mit sechs endet:
seq -s* 6
Wenn wir diese Liste in bc
, wertet es die Liste mit den Sternchen ( *
) als Multiplikationssymbole aus:
seq -s* 6 | v. Chr
Wir können dies auch mit anderen Symbolen tun. Der folgende Befehl verwendet ein Pluszeichen ( +
), um eine Liste zu erstellen, in der alle Zahlen hinzugefügt werden:
seq -s+ 5
Wir geben Folgendes ein, um das an bc
und die Liste auszuwerten:
seq -s+ 5 | v. Chr
Erstellen von Dateien mit seq
Der touch
-Befehl aktualisiert Zeit- und Datumsstempel auf Dateien. Wenn die Datei nicht existiert, erstellt touch sie. Wir können die Befehlszeilenerweiterung mit touch
und seq
verwenden, um eine Sammlung thematisch benannter, aber unterschiedlich nummerierter Dateien zu erstellen.
Wir erstellen einen Satz von 10 Dateien mit demselben Basisnamen und einer anderen Nummer (Datei-1.txt, Datei-2.txt usw.). Wir geben Folgendes ein:
touch $(seq -f "file-%g.txt" 1 10)
Dann geben wir Folgendes ein, um die Dateien zu überprüfen:
ls-Datei*
Verwenden von seq in Bash-Loops
Wir können seq
in Bash-Skripten verwenden, um Schleifen mit Dezimalstellen zu steuern.
Geben Sie den folgenden Text in einen Editor ein und speichern Sie ihn dann als „loops.sh“:
#!/bin/bash für val in $(seq 5 0,2 6,6); tun echo "Der Wert ist jetzt: $val" fertig
Als nächstes geben wir Folgendes ein, um unser neues Skript ausführbar zu machen:
chmod +x loop.sh
Wenn wir das Skript ausführen, wird der Schleifenzähler im Terminalfenster gedruckt. Wir können dann Folgendes eingeben, um zu sehen, wie sich der Dezimalschleifenzähler mit jeder Iteration der Schleife erhöht:
./loop.sh
Denken Sie daran, dass seq
auch rückwärts zählen kann; Sie können das in Schleifen auf die gleiche Weise verwenden.
Schön und einfach
Eine Sache bei seq
ist, dass es keine große Lernkurve gibt. Es hat eine erfrischend kurze man
, aber Sie können es trotzdem auf interessante Weise verwenden.
Da wir oft schnell Testdateien mit realistischen Größen erstellen müssen, verwenden wir seq
mit einem Formatstring. Wir leiten dann die Ausgabe um, um eine Datei zu erstellen, die so viele Zeilen mit Dummy-Daten enthält, wie wir möchten.
Linux-Befehle | ||
Dateien | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · konvertieren · rclone · shred · srm | |
Prozesse | alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg | |
Vernetzung | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw |
RELATED: Beste Linux-Laptops für Entwickler und Enthusiasten