staging.inyokaproject.org

choose

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:


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:

Inhaltsverzeichnis
  1. Installation
  2. Benutzung

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.

Diese Revision wurde am 26. Juli 2022 02:12 von mubuntuHH erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Shell, Rust, Datenanalyse