So verwenden Sie seq, um eine Zahlenfolge in Linux zu generieren
Unter Linux finden Sie mehrere Befehle mit ungewöhnlichen Funktionen. Ein solcher Befehl ist seq, der abhängig von den angegebenen Argumenten eine Zahlenfolge ausgibt.
Aber was können Sie möglicherweise mit einem Befehlszeilendienstprogramm tun, das Sie mit einer Reihe von Ziffern bewirft? Das erfährst du in diesem Ratgeber.
Was ist der seq-Befehl?
Wie oben erwähnt, generiert der seq-Befehl in Linux schnell eine Folge numerischer Zeichen. Benutzer können dem Befehl Argumente übergeben, um verschiedene Zahlenkombinationen zu generieren. Sie können beispielsweise eine inkrementierte Liste erhalten, indem Sie einfach ein zusätzliches Argument an seq übergeben.
Aber was ist der praktische Nutzen des Befehls? Obwohl seq in seiner Gesamtheit nicht wie ein leistungsstarkes Tool erscheint, können Sie von dem Befehl profitieren, indem Sie ihn mit anderen Linux-Dienstprogrammen implementieren. Sie können seq auch in Bash-Skripten verwenden , um ihre wahre Kraft zu enthüllen.
So verwenden Sie seq unter Linux
Seq braucht nur wenige Argumente, was es zu einem leicht zu erlernenden Werkzeug für jeden macht.
Grundsyntax
Die grundlegende Syntax des Befehls lautet:
seq options numbers
…wobei Optionen die Flags sind, die Sie angeben können, um verschiedene Methoden des Befehls aufzurufen, und Zahlen die Argumente sind, die Sie übergeben, um die numerische Sequenz zu generieren.
Generieren Sie eine Liste von Zahlen
Seq-Argumente folgen dem unten angegebenen Eingabeformat:
seq last
seq first last
seq first increment last
Wenn Sie nur eine Zahl angeben, interpretiert seq diese als Obergrenze für die Liste und generiert eine Sequenz beginnend bei eins bis zur angegebenen Zahl.
seq 5
Der oben genannte Befehl gibt Folgendes aus:
1
2
3
4
5
Wenn seq zwei Zahlen als Eingabe empfängt, interpretiert es diese als Untergrenze und Obergrenze für die Sequenz. So erstellen Sie eine Liste mit Zahlen von vier bis acht:
seq 4 8
Ausgabe:
4
5
6
7
8
Wenn Sie jedoch drei Zahlen an den Befehl übergeben, interpretiert er das zweite Argument als Inkrementnummer. Beispielsweise:
seq 3 2 13
Der oben genannte Befehl gibt eine Liste mit Zahlen von drei bis 13 in einer Schrittweite von zwei aus.
3
5
7
9
11
13
Trennzeichen zwischen Zahlen hinzufügen
Standardmäßig verwendet seq ein Zeilenumbruchzeichen als Trennzeichen für die Liste. Aus diesem Grund steht jede Nummer in der Liste in einer separaten Zeile.
Sie können dieses Standardverhalten ändern und mit dem Flag -s ein benutzerdefiniertes Trennzeichen verwenden. So verwenden Sie das Zeichen Punkt ( . ) als Trennzeichen:
seq -s . 3 7
Ausgabe:
3.4.5.6.7
Beachten Sie, dass einige Zeichen wie die Tilde ( ~ ) in Anführungszeichen eingeschlossen werden müssen. Dies liegt daran, dass das Terminal das Tilde- Zeichen verwendet, um das /home- Verzeichnis zu kennzeichnen, und dies würde sich in der Ausgabe widerspiegeln, wenn Sie die Anführungszeichen nicht hinzufügen.
seq -s ~ 3 7
Ausgabe:
3/home/4/home/5/home/6/home/7
Auf der anderen Seite, wenn Sie das Trennzeichen mit Anführungszeichen umschließen:
seq -s '~' 3 7
Ausgabe:
3~4~5~6~7
Optimieren Sie das Ausgabeformat
Sie können das Format für die Ausgabesequenz auch mit dem Flag -f ändern. Standardmäßig extrahiert seq den Formatstil aus der Benutzereingabe. Wenn Sie beispielsweise die Zahlen 0,1 und 0,5 angeben, hat die Standardausgabe ein Gleitkomma-Zahlenformat.
seq 0.1 0.5
Ausgabe:
0.1
0.2
0.3
0.4
0.5
Sie können ein benutzerdefiniertes Ausgabeformat mit den verschiedenen Konvertierungsspezifikationen wie %a, %e, %f, %g, %A, %E, %F und %G angeben.
Sie können den Bezeichner %f verwenden, wenn die Ausgabe einem Gleitkommazahlenformat folgen soll.
seq-f %f 4 7
Ausgabe:
4.000000
5.000000
6.000000
7.000000
So ändern Sie die Genauigkeit auf bis zu zwei Dezimalstellen:
seq -f %0.2f 4 7
Ausgabe:
4.00
5.00
6.00
7.00
Sie können die Ausgabe auch vollständig transformieren, indem Sie eine Ausgabevorlage angeben. Um beispielsweise eine Liste aller IP-Adressen abzurufen , die mit 192.168.5.x beginnen :
seq -f 192.168.5.%g 1 233
Ausgabe:
Um der Ausgabe Auffüllung hinzuzufügen, können Sie das Flag -w verwenden. Das Flag -w behält die Breite der Ausgabe gemäß der größten angegebenen Zahl bei.
So generieren Sie eine Zahlenfolge zwischen eins und 1.000 mit einer Schrittweite von 100 unter Beibehaltung einer konstanten Breite:
seq -w 1 100 1000
Ausgabe:
0001
0101
0201
0301
0401
0501
0601
0701
0801
0901
Holen Sie sich die seq-Befehlszeilenhilfe
Obwohl seq einfach zu verwenden ist, haben Benutzer manchmal das Bedürfnis, die Handbuchseite für den Befehl zu überprüfen . Das Flag –help zeigt die seq-Manpage an:
seq --help
Ausgabe:
Praktische Beispiele
Wie bereits erwähnt, wird seq hauptsächlich mit anderen Linux-Befehlen verwendet, zum Beispiel touch und expr.
Mathematische Operationen durchführen
Wenn Sie einen bestimmten Zahlenbereich schnell hinzufügen oder subtrahieren möchten, können Sie dies ganz einfach mit seq innerhalb von expr tun , einem Linux-Befehl, der die Eingabe als Ausdruck behandelt und die entsprechende Ausgabe anzeigt.
So addieren Sie alle Zahlen zwischen eins und 100:
expr `(seq -s " + " 1 100)`
Der Befehl seq erzeugt eine Ausgabe wie folgt:
1 + 2 + 3 + 4 + 5 + 6...
Expr behandelt ihn als Eingabeausdruck und gibt die Lösung aus.
5050
Sie können andere mathematische Operationen ausführen, indem Sie einfach das Trennzeichen im Befehl seq durch andere Operatoren ersetzen.
Erstellen Sie schnell mehrere Dateien
Wenn Sie unter Linux mehrere Dateien erstellen möchten, deren Namen einem ähnlichen Muster folgen, können Sie dies einfach mit dem Befehl touch und seq tun.
Um beispielsweise 10 Dateien mit dem Namen file-x.txt zu erstellen, wobei x eine Zahl von eins bis 10 ist:
touch $(seq -f "file%g.txt" 1 10)
Touch erstellt die Dateien im Handumdrehen für Sie.
Implementieren von seq in Skripten
Angenommen, Sie schreiben ein Netzwerk-Scanner-Tool wie Nmap in der bash, vielleicht möchten Sie eine Liste aller offenen Ports in einem Netzwerk erhalten. Dafür müssen Sie jedoch jeden Port (insgesamt 65535) pingen und die Antwort analysieren.
Um Zeit zu sparen, können Sie seq verwenden und eine Liste von IP-Adressen und Portkombinationen erstellen, die Sie in Ihrem Skript verwenden können.
Angenommen , Sie möchten die Liste aller Ports eines Geräts mit der IP-Adresse 1.2.3.4 abrufen . Hier ist ein kurzer Befehl, um die gewünschte Ausgabe zu generieren:
seq -f 1.2.3.4:%g 1 65535
Ausgabe:
Sie können diese Ausgabe dann als Liste verwenden und sie durchlaufen, jeden Port mit Ihrem Skript überprüfen und analysieren, ob er geöffnet ist oder nicht.
Wie schnell generiert seq die Zahlen?
Sie denken vielleicht, wenn Sie mit einer for-Schleife in der bash ähnliche Ergebnisse erzielen können, warum wählen Sie dann seq für die Aufgabe? Dies liegt daran, dass die wahre Stärke von seq in seiner Geschwindigkeit liegt. Seq ist schneller als jeder andere Befehl, der unter Linux eine Zahlenfolge generiert.
Sie können die Geschwindigkeit sogar mit dem Zeitdienstprogramm unter Linux testen. Mal sehen, wie lange es dauert, bis seq eine Liste mit einer Million Zahlen beginnend mit einer generiert.
time seq 1000000
Wenn Sie sich die Ausgabe unten ansehen, können Sie sehen, dass seq nur etwa vier Sekunden benötigt hat, um eine Liste mit einer Million Zahlen zu generieren.
Die Macht der Linux-Befehlszeile
Seq ist nicht das einzige Tool unter Linux, das sich stark darauf konzentriert, schnelle und genaue Ergebnisse zu liefern. Während Sie mit einer for-Schleife in bash eine Liste von Zahlen generieren können, wird dies nicht empfohlen, wenn man bedenkt, wie schnell seq wirklich ist.
Die Linux-Kommandozeile gibt Ihnen mehr Kontrolle über das Betriebssystem und seine Funktionalitäten, was auch ein Grund ist, noch heute mit der Nutzung des Terminals über die GUI zu beginnen.