choose
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Ubuntu 22.04 Jammy Jellyfish
Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
choose ist eine Alternative zum Befehl cut und dient zum spaltenweisen Extrahieren von Daten aus einer Datei. choose ist in Rust programmiert, die Syntax bei der Auswahl der Spalten orientiert sich jedoch an der Syntax von Python zum Slicing 🇬🇧.
choose kann von der Standardeingabe lesen und die Ausgabe erfolgt standardmäßig auf die Standardausgabe. Damit eignet sich choose auch zur Verwendung in Befehlsketten in Kombination mit dem Pipe-Operator: oder zur Verwendung in Shellskripten.
Installation¶
choose kann über den Rust-Paketmanager cargo installiert werden[1]:
cargo install choose
Hinweis!
Fremdsoftware kann das System gefährden.
Benutzung¶
Die allgemeine Syntax von choose lautet:
choose [OPTIONEN] AUSWAHL
Wird bei den Optionen keine Eingabedatei angegeben, liest das Programm von der Standardeingabe. Wird bei den Optionen kein Feldtrenner spezifiziert, wird das Leerzeichen als Feldtrenner angenommen. AUSWAHL
ist, wie bei vielen Programmiersprachen üblich, ein Null-basierter Index, d.h. die erste Spalte wird mit 0 referenziert.
Beispiel:
echo 'Ubuntu ist toll' | choose 0
liefert
Ubuntu
als Ausgabe. Würde man die 0
hinter choose
durch eine 2
ersetzen, wäre die Ausgabe toll
.
Die Ausgabe von choose erfolgt immer auf die Standardausgabe, also in der Regel das Terminal, in dem man das Programm ausführt.
Möchte man choose auf eine Eingabedatei anwenden, dient dazu die Option -i
. Für die folgenden Beispiele wird die dargestellte CSV-Datei release.csv genutzt:
1 2 3 4 5 6 | Name;Version;LTS/STS;Erscheinungsdatum;Supportende Jammy Jellyfish;22.04;LTS;21. April 2022 ;April 2027 Impish Indri;21.10;STS;14. Oktober 2021;14. Juli 2022 Hirsute Hippo;21.04;STS;22. April 2021;20. Januar 2022 Groovy Gorilla;20.10;STS;22. Oktober 2020;22. Juli 2021 Focal Fossa;20.04;LTS;23. April 2020;April 2025 |
Da in der Datei das Semikolon als Feldtrenner genutzt wird, muss zusätzlich für choose der Feldtrenner mit -f ';
angegeben werden.
Ausgabe der ersten und fünften Spalte
choose -i releases.csv -f ';' 0 4
Name Supportende Jammy Jellyfish April 2027 Impish Indri 14. Juli 2022 Hirsute Hippo 20. Januar 2022 Groovy Gorilla 22. Juli 2021 Focal Fossa April 2025
Ausgabe der letzten Spalte:
choose -i releases.csv -f ';' -1
Supportende April 2027 14. Juli 2022 20. Januar 2022 22. Juli 2021 April 2025
Ausgabe der 2. bis zur 4. Spalte, exklusive der 4. Spalte:
choose -i releases.csv -f ';' 1..3
Version LTS/STS 22.04 LTS 21.10 STS 21.04 STS 20.10 STS 20.04 LTS
Ausgabe der 2. bis zur 4. Spalte, inklusive der 4. Spalte:
choose -i releases.csv -f ';' 1..=3 #oder auch: choose - release.csv -f ';' 1:3
Version LTS/STS Erscheinungsdatum 22.04 LTS 21. April 2022 21.10 STS 14. Oktober 2021 21.04 STS 22. April 2021 20.10 STS 22. Oktober 2020 20.04 LTS 23. April 2020
Man kann über die Option -o
einen Feldtrenner für die Ausgabe setzen, im folgenden Beispiel -
(also: Leerzeichen Minus Leerzeichen):
choose -i releases.csv -f ';' -o ' - ' 0:1
Name - Version Jammy Jellyfish - 22.04 Impish Indri - 21.10 Hirsute Hippo - 21.04 Groovy Gorilla - 20.10 Focal Fossa - 20.04
Als Feldtrenner kann choose einen beliebigen, für die Programmiersprache Rust gültigen, regulären Ausdruck 🇬🇧 verwenden. Hat man beispielsweise die folgende Eingabedatei namens einszweidrei.txt
1 2 3 | eins zwei drei one two three een twee drie |
und wendet den Befehl
choose -i einszweidrei.txt -f '.we\w+' 1
an, erhält man folgende Ausgabe:
drei drie
Der Trenner ist der reguläre Ausdruck .we\w+
, also: ein beliebiges Zeichen, gefolgt von w
und e
, gefolgt von mindestens einem Buchstaben und/oder einer Zahl. In der ersten und dritten Zeile trifft der Ausdruck auf zwei
und twee
zu und die Zeile wird dort geteilt. Es wird die 2. Spalte selektiert. Diese existiert in der zweiten Zeile der Datei nicht, da hier der reguläre Ausdruck nicht zutrifft, demzufolge nicht getrennt wird und es daher nur eine Spalte (mit dem Index 0) gibt.
Mehr Beispiele und eine weitere Optionen sind in den Beispielen auf der Projektseite des Projekts zu finden.