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 liestcutvon der Standardeingabe.
Die wichtigsten Optionen
Der cut-Befehl kennt drei Hauptmodi, um Teile einer Zeile auszuwählen:
| Option | Beschreibung |
|---|---|
-f | Extrahiert bestimmte Felder (durch Trennzeichen getrennt) |
-d | Legt das Trennzeichen fest (Standard: Tabulator) |
-b | Extrahiert bestimmte Bytes |
-c | Extrahiert bestimmte Zeichen |
--complement | Kehrt die Auswahl um (alles außer dem Angegebenen) |
--output-delimiter | Setzt 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
awkodersedbesser 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.