Wenn Sie schon einmal Karten gespielt haben, kennen Sie wahrscheinlich den Begriff Mischen. Etwas schwer vorstellbar, es gibt ein Linux-Befehlszeilentool, das genau das mit Zeilen in Dateien macht. In diesem Tutorial werden wir die Grundlagen des 'shuf'-Befehls anhand einiger leicht verständlicher Beispiele besprechen.
Aber bevor wir das tun, ist es erwähnenswert, dass alle Beispiele hier auf einem Ubuntu 18.04 LTS-Rechner getestet wurden.
Linux-shuf-Befehl
Mit dem Befehl shuf in Linux können Sie zufällige Permutationen generieren. Es folgt die Syntax:
shuf [OPTION]... [FILE]
Und so erklärt es die Manpage des Tools:
Write a random permutation of the input lines to standard output.
Im Folgenden finden Sie einige Beispiele im Q&A-Stil, die Ihnen eine bessere Vorstellung davon vermitteln sollen, wie der Befehl shuf funktioniert.
Q1. Wie verwende ich den Befehl shuf?
Die grundlegende Verwendung ist sehr einfach. Übergeben Sie einfach einen Dateinamen als Eingabe. Hier ist ein Beispiel:
shuf test.txt
Jetzt enthält die Datei test.txt die folgenden Zeilen:
1
2
3
4
5
6
7
8
9
Aber der obige Befehl shuf erzeugte die folgende Ausgabe:
3
4
6
5
1
8
2
7
9
So können Sie sehen, dass die Zeilen gemischt wurden.
Q2. Wie kann man die Anzahl der Zeilen in der Ausgabe begrenzen?
Wenn Sie die Anzahl der Zeilen in der shuf-Ausgabe begrenzen möchten, verwenden Sie die Befehlszeilenoption -n, bei der Sie eine Zahl übergeben müssen, die die maximale Anzahl der Zeilen darstellt, die Sie in der Ausgabe haben möchten.
Zum Beispiel:
shuf -n 3 test.txt
Der obige Befehl erzeugte die folgende Ausgabe:
6
4
9
Q3. Wie erlaube ich die Wiederholung von Zeilen in der Ausgabe?
Angenommen, die Eingabedatei enthält 9 Zeilen, aber Sie möchten, dass shuf mehr Zeilen als die Ausgabe erzeugt (unter Verwendung der oben beschriebenen Option -n). Dies kann mit der Option -r erfolgen.
-r, --repeat
output lines can be repeated
Wenn Sie also möchten, dass shuf 25 Zeilen in der Ausgabe erzeugt, führen Sie den folgenden Befehl aus:
shuf -r -n 25 test.txt
Hier ist die Ausgabe dieses Befehls:
6
8
4
5
9
3
3
1
2
5
7
5
9
5
8
5
2
8
8
7
4
4
8
5
3
Q4. Wie bringt man shuf dazu, Eingabeargumente als Zeilen zu behandeln?
Verwenden Sie dazu die Befehlszeilenoption -e. Hier ist ein Beispiel:
shuf -e 1 2 3 4 5 6 7 8 9
Hier ist die Ausgabe dieses Befehls:
9
1
7
8
6
2
3
5
4
Schlussfolgerung
Zugegeben, shuf ist nicht die Art von Werkzeug, das Sie jeden Tag benötigen würden, aber es schadet nicht, sich mit diesem Dienstprogramm vertraut zu machen, zumal seine Lernkurve nicht so steil ist. Wenn Sie alles, was wir hier besprochen haben, geübt haben, besuchen Sie die Manpage des Tools, um mehr darüber zu erfahren.