Der Befehl cut extrahiert bestimmte Teile aus jeder Zeile einer Datei oder der Standardeingabe. Er eignet sich besonders gut für strukturierte Textdaten wie CSV-Dateien, Logfiles oder Systemdateien mit festen Spalten.

Syntax des cut-Befehls

cut OPTION... [DATEI]...
  • OPTION - Legt fest, welche Teile der Zeilen extrahiert werden (Felder, Bytes oder Zeichen).
  • DATEI - Eine oder mehrere Eingabedateien. Ohne Angabe liest cut von der Standardeingabe.

Die wichtigsten Optionen

Der cut-Befehl kennt drei Hauptmodi, um Teile einer Zeile auszuwählen:

OptionBeschreibung
-fExtrahiert bestimmte Felder (durch Trennzeichen getrennt)
-dLegt das Trennzeichen fest (Standard: Tabulator)
-bExtrahiert bestimmte Bytes
-cExtrahiert bestimmte Zeichen
--complementKehrt die Auswahl um (alles außer dem Angegebenen)
--output-delimiterSetzt ein eigenes Ausgabetrennzeichen

Felder extrahieren

Die häufigste Anwendung von cut ist das Extrahieren von Feldern mit der Option -f. Felder sind durch ein Trennzeichen voneinander getrennt.

Beispieldatei

Für die folgenden Beispiele verwenden wir eine Datei mitarbeiter.txt mit tabulatorgetrennten Spalten:

cat mitarbeiter.txt
1001	Müller	Vertrieb	2019
1002	Schmidt	Entwicklung	2021
1003	Weber	Marketing	2018

Einzelne Felder auswählen

Um das zweite Feld (den Namen) zu extrahieren:

cut -f 2 mitarbeiter.txt
Müller
Schmidt
Weber

Mehrere Felder auswählen

Mehrere Felder gibst du durch Kommas getrennt an:

cut -f 1,3 mitarbeiter.txt
1001	Vertrieb
1002	Entwicklung
1003	Marketing

Feldbereiche angeben

Mit einem Bindestrich definierst du Bereiche:

cut -f 2-4 mitarbeiter.txt

Das extrahiert die Felder 2 bis 4. Du kannst auch offene Bereiche verwenden:

  • -f -3 – Felder 1 bis 3
  • -f 2- – Ab Feld 2 bis zum Ende der Zeile

Ein eigenes Trennzeichen verwenden

Mit der Option -d legst du ein anderes Trennzeichen als den Tabulator fest. Das ist besonders nützlich für CSV-Dateien oder Systemdateien.

Beispiel: Benutzernamen aus /etc/passwd

Die Datei /etc/passwd verwendet den Doppelpunkt als Trennzeichen:

cut -d ':' -f 1 /etc/passwd | head -5
root
daemon
bin
sys
sync

Beispiel: CSV-Dateien verarbeiten

Bei einer CSV-Datei mit Semikolon als Trennzeichen:

cut -d ';' -f 2,3 produkte.csv

Leerzeichen als Trennzeichen

Du kannst auch ein Leerzeichen als Trennzeichen verwenden:

echo "Linux ist großartig" | cut -d ' ' -f 2
ist

Bytes und Zeichen extrahieren

Neben Feldern kannst du auch bestimmte Byte- oder Zeichenpositionen extrahieren.

Nach Bytes schneiden

Die Option -b extrahiert bestimmte Bytes:

echo "Kommandozeile" | cut -b 1-8
Kommando

Das ist nützlich bei Dateien mit festen Spaltenbreiten, etwa bei älteren Logformaten.

Nach Zeichen schneiden

Die Option -c funktioniert ähnlich wie -b. Bei ASCII-Text verhalten sich beide identisch. Bei Multibyte-Zeichen (wie Umlauten in UTF-8) kann es Unterschiede geben.

echo "Hallo Welt" | cut -c 7-10
Welt

Auswahl umkehren

Mit --complement kehrst du die Auswahl um. Statt der angegebenen Felder werden alle anderen ausgegeben:

cut -f 2 --complement mitarbeiter.txt
1001	Vertrieb	2019
1002	Entwicklung	2021
1003	Marketing	2018

Das extrahiert alle Felder außer dem zweiten.

Ausgabetrennzeichen ändern

Standardmäßig verwendet cut das Eingabetrennzeichen auch für die Ausgabe. Mit --output-delimiter änderst du das:

cut -d ':' -f 1,6 --output-delimiter=' -> ' /etc/passwd | head -3
root -> /root
daemon -> /usr/sbin
bin -> /bin

Praktische Anwendungsbeispiele

Alle Gruppennamen auflisten

cut -d ':' -f 1 /etc/group

IP-Adressen aus Logdateien extrahieren

Bei einem Logformat wie 192.168.1.100 - - [16/Jan/2025:10:15:30]:

cut -d ' ' -f 1 access.log | sort -u

Spalten aus einer CSV-Datei entfernen

Um bestimmte Spalten zu entfernen, kombiniere --complement mit der Feldauswahl:

cut -d ',' -f 3 --complement export.csv > bereinigt.csv

Einschränkungen

Der cut-Befehl hat einige Einschränkungen:

  • Das Trennzeichen muss genau ein Zeichen lang sein
  • Aufeinanderfolgende Trennzeichen werden nicht als ein Trennzeichen behandelt
  • Für komplexere Textverarbeitung sind awk oder sed besser geeignet

Zusammenfassung

Der Befehl cut extrahiert Spalten, Felder oder Zeichenbereiche aus Textdateien. Er ist besonders nützlich für strukturierte Daten mit einheitlichen Trennzeichen. Für einfache Extraktionen ist cut schnell und effizient – bei komplexeren Anforderungen greifst du besser zu awk.

Verwandte Artikel