navigation Navigation


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]
Parameter
-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.

Beispiel
echo "abcdef" | cut -b 2-4
bcd

Hier 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.

Beispiel
echo "abcdef" | cut -c 2-4
bcd

Hier 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.

Beispiel
echo "Name:Alter:Ort" | cut -d ":" -f 2
Alter

Hier 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.

Beispiel
echo "Name:Alter:Ort" | cut -d ":" -f 1,3
Name:Ort

Hier 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.

Beispiel
echo -e "Name:Alter\nOrt" | cut -d ":" -f 2 -s
Alter

Hier 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.

Beispiel
echo -e "Name:Alter\0Ort:Land\0" | cut -z -d ":" -f 1
NameOrt

In 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