cut
Das cut Kommando ist ein nützliches Werkzeug in Linux, das verwendet wird, um Text aus einer Datei oder Eingabe basierend auf Spalten, Zeichenpositionen oder anderen Kriterien auszuschneiden. Es ist besonders nützlich, wenn man bestimmte Teile einer Datei extrahieren oder analysieren möchte.
Syntax
cut OPTION [FILE]-b, --bytes=LIST
Wählt nur die angegebenen Bytes aus.
-c, --characters=LIST
Wählt nur die angegebenen Zeichen aus.
-d, --delimiter=DELIM
Verwendet DELIM anstelle von TAB als Feldtrennzeichen.
-f, --fields=LIST
Wählt nur die angegebenen Felder aus; druckt auch Zeilen ohne Trennzeichen, es sei denn, -s ist angegeben.
-n
Wird ignoriert (hat keine Funktion).
--complement
Ergänzt die Auswahl der Bytes, Zeichen oder Felder.
-s, --only-delimited
Druckt keine Zeilen ohne Trennzeichen.
--output-delimiter=STRING
Verwendet STRING als Ausgabetrennzeichen; standardmäßig wird das Eingabetrennzeichen verwendet.
-z, --zero-terminated
Verwendet NUL statt Zeilenumbruch als Zeilentrenner.
--help: Zeigt die Hilfeinformationen und beendet das Programm.
--version
Gibt die Versionsinformationen aus und beendet das Programm.
Das cut Kommando arbeitet, indem es Daten aus jeder Zeile der Eingabedatei oder des Eingabestroms extrahiert, basierend auf den angegebenen Optionen. Die Ausgabe enthält nur die gewünschten Abschnitte des Textes.
Wichtigste Optionen
-b [Position(en)]: Extrahiert bestimmte Byte-Positionen-c [Position(en)]: Extrahiert bestimmte Zeichen-Positionen-d [Trennzeichen]: Bestimmt das Trennzeichen (nur mit-f)-f [Feld(er)]: Wählt spezifische Felder basierend auf dem Trennzeichen-n: Verhindert das Ausschneiden von Multibyte-Zeichen (nur mit-b)-s: Unterdrückt Zeilen, die das Trennzeichen nicht enthalten-z: Verwendet Null-Byte als Trennzeichen anstelle von Zeilenumbrüchen
Verwendung von cut
Byte Positionen
Die Option -b ermöglicht es, bestimmte Byte-Positionen auszuwählen und auszugeben. Diese Option ist nützlich, wenn der Text in einer festen Breite vorliegt.
echo "abcdef" | cut -b 2-4bcdHier extrahiert cut die Bytes 2 bis 4 (also die Zeichen b, c un d) aus dem Text.
Hinweis: Die -b Option arbeitet mit Bytes und nicht mit Zeichen. In UTF-8 codierten Texten, bei denen einige Zeichen mehr als ein Byte belegen, kann dies zu unerwarteten Ergebnissen führen.
Zeichen Positionen
Die Option -c funktioniert ähnlich wie -b, arbeitet jedoch auf der Basis von Zeichen-Positionen, anstelle von Bytes.
echo "abcdef" | cut -c 2-4bcdHier extrahiert cut die Zeichen an den Positionen 2 bis 4 (also b, c und d).
Trennzeichen (Delimiter)
Mit der Option –d kann man ein spezifisches Trennzeichen angeben, das als Abgrenzung zwischen Feldern dient. Diese Option wird in der Regel in Kombination mit -f verwendet, um bestimmte Felder basierend auf dem Trennzeichen auszuwählen.
echo "Name:Alter:Ort" | cut -d ":" -f 2AlterHier wird : als Trennzeichen verwendet, und cut gibt das zweite Feld (Alter) aus.
Felder
Die Option -f wird verwendet, um bestimmte Felder (basierend auf dem Trennzeichen) auszuwählen. Diese Option funktioniert nur in Kombination mit -d oder wenn das Standard-Trennzeichen (Tabulator) verwendet wird.
echo "Name:Alter:Ort" | cut -d ":" -f 1,3Name:OrtHier gibt cut das erste und das dritte Feld (Name und Ort) aus, getrennt durch das Trennzeichen „:„.
Still (Silent)
Die Option -s unterdrückt die Ausgabe von Zeilen, die das Trennzeichen nicht enthalten. Dies ist nützlich, wenn man nur Zeilen sehen möchte, die ein bestimmtes Trennzeichen enthalten.
echo -e "Name:Alter\nOrt" | cut -d ":" -f 2 -sAlterHier wird nur die Zeile ausgegeben, die das Trennzeichen „:“ enthält, die Zeile Ort wird ignoriert.
Null-Byte-Trennung
Mit der Option -z kann man cut so konfigurieren, dass es Null-Byte (\0) anstellt von neuen Zeilen als Zeilentrennzeichen verwendet. Dies ist nützlich, wenn man mit Binärdaten oder speziellen Textdateien arbeitet.
echo -e "Name:Alter\0Ort:Land\0" | cut -z -d ":" -f 1NameOrtIn diesem Beispiel trennt cut die Eingabe anhand des Null-Bytes und es wird nur das erste Feld jedes Datensatzes ausgegeben (Name und Ort).
Spalten aus CSV
Man kann bestimmte Felder aus den Zeilen einer CSV-Datei extrahieren. Im folgenden Beispiel das erste und dritte Feld aus jeder Zeile einer CSV herausgeholt.
cut -d "," -f 1,3 daten.csv