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