# cut — Felder, Zeichen und Bytes aus Textzeilen ausschneiden

> Praxis-Guide zu cut — gezielt Felder, Zeichen oder Byte-Bereiche aus Textdateien und Pipe-Ausgaben extrahieren, mit Trennzeichen, Bereichen und Komplement.

Source: https://www.jpkc.com/db/cheatsheets/files-text/cut/

<!-- PROSE:intro -->
cut ist das schlanke Werkzeug, um aus jeder Zeile genau die Spalte herauszuschneiden, die du brauchst – sei es ein Feld in einer CSV-Datei, ein Zeichenbereich in einer Logzeile oder ein Byte-Offset in Festbreiten-Daten. Du gibst an, ob du nach Feldern (`-f`), Zeichen (`-c`) oder Bytes (`-b`) schneidest, und cut liefert dir den Rest zeilenweise zurück. Standardmäßig trennt cut Felder am Tabulator; mit `-d` legst du ein eigenes Trennzeichen fest. In Pipelines ist cut oft die schnellste Antwort, wenn awk zu viel des Guten wäre.
<!-- PROSE:intro:end -->

## Feldextraktion

`cut -f <n> <file>` — Extrahiert das n-te Feld (standardmäßig Tab-getrennt).

```bash
cut -f 2 data.tsv
```

`cut -f <n> -d '<delim>' <file>` — Extrahiert das n-te Feld mit einem eigenen Trennzeichen.

```bash
cut -f 1 -d ',' users.csv
```

`cut -f <n>,<m> -d '<delim>' <file>` — Extrahiert mehrere bestimmte Felder.

```bash
cut -f 1,3 -d ':' /etc/passwd
```

`cut -f <n>-<m> -d '<delim>' <file>` — Extrahiert einen Feldbereich.

```bash
cut -f 2-4 -d ',' data.csv
```

`cut -f <n>- -d '<delim>' <file>` — Extrahiert ab Feld n bis zum Ende.

```bash
cut -f 3- -d ':' /etc/passwd
```

`cut -f -<n> -d '<delim>' <file>` — Extrahiert vom ersten Feld bis Feld n.

```bash
cut -f -3 -d ',' data.csv
```

`cut -f <n> -d '<delim>' -s <file>` — Unterdrückt Zeilen, die das Trennzeichen nicht enthalten.

```bash
cut -f 2 -d ',' -s mixed.txt
```

`cut -f <n> -d '<delim>' --output-delimiter='<sep>'` — Verwendet ein anderes Trennzeichen für die Ausgabe.

```bash
cut -f 1,3 -d ':' --output-delimiter=' | ' /etc/passwd
```

## Zeichenextraktion

`cut -c <n> <file>` — Extrahiert das n-te Zeichen jeder Zeile.

```bash
cut -c 1 file.txt
```

`cut -c <n>-<m> <file>` — Extrahiert einen Zeichenbereich.

```bash
cut -c 1-10 file.txt
```

`cut -c <n>,<m>,<o> <file>` — Extrahiert bestimmte Zeichenpositionen.

```bash
cut -c 1,5,10 file.txt
```

`cut -c <n>- <file>` — Extrahiert ab Zeichen n bis zum Zeilenende.

```bash
cut -c 5- file.txt
```

`cut -c -<n> <file>` — Extrahiert die ersten n Zeichen jeder Zeile.

```bash
cut -c -20 file.txt
```

## Byte-Extraktion

`cut -b <n> <file>` — Extrahiert das n-te Byte jeder Zeile.

```bash
cut -b 1 file.txt
```

`cut -b <n>-<m> <file>` — Extrahiert einen Byte-Bereich (praktisch für Binärdaten mit fester Breite).

```bash
cut -b 1-16 binary.dat
```

`cut -b <n>- <file>` — Extrahiert ab Byte n bis zum Ende.

```bash
cut -b 5- data.bin
```

## Komplement

`cut --complement -f <n> -d '<delim>' <file>` — Extrahiert alle Felder AUSSER den angegebenen.

```bash
cut --complement -f 2 -d ',' data.csv
```

`cut --complement -c <n>-<m> <file>` — Entfernt einen Zeichenbereich und behält den Rest.

```bash
cut --complement -c 1-5 file.txt
```

## Typische Anwendungsfälle

`cut -f 1 -d ':' /etc/passwd` — Extrahiert alle Benutzernamen aus /etc/passwd.

```bash
cut -f 1 -d ':' /etc/passwd
```

`echo $PATH | cut -f 1 -d ':'` — Holt das erste Verzeichnis aus der PATH-Variable.

```bash
echo $PATH | cut -f 1 -d ':'
```

`cut -f 1,3 -d ':' /etc/passwd | sort` — Extrahiert Benutzername und UID und sortiert danach.

```bash
cut -f 1,3 -d ':' /etc/passwd | sort -t ':' -k 2 -n
```

`ps aux | cut -c 1-80` — Kürzt die Prozessliste auf 80 Zeichen Breite.

```bash
ps aux | cut -c 1-80
```

`<command> | cut -f <n> -d ' '` — Extrahiert eine Spalte aus leerzeichengetrennter Befehlsausgabe.

```bash
df -h | cut -c 1-20,45-52
```

`rev <file> | cut -f 1 -d '.' | rev` — Extrahiert Dateiendungen durch Umkehren, Schneiden und erneutes Umkehren.

```bash
ls | rev | cut -f 1 -d '.' | rev
```

`head -1 data.csv | cut -f 1- -d ',' --output-delimiter=$'\n'` — Listet CSV-Spaltenüberschriften, eine pro Zeile.

```bash
head -1 data.csv | cut -f 1- -d ',' --output-delimiter=$'\n'
```

<!-- PROSE:outro -->
## Fazit

cut glänzt durch Einfachheit: Wenn deine Daten ein klares, gleichbleibendes Trennzeichen haben, holst du die gewünschte Spalte schneller und lesbarer heraus als mit jedem anderen Werkzeug. Beachte aber die Grenzen – cut kennt nur ein einzelnes Trennzeichen (keine wiederholten Leerzeichen wie bei awk) und kann Felder nicht umordnen. Für mehrere aufeinanderfolgende Leerzeichen quetschst du sie zuvor mit `tr -s ' '` zusammen; sobald Logik, Bedingungen oder variable Trennung ins Spiel kommen, ist awk die bessere Wahl. Bei Multibyte-Zeichen (UTF-8) unterscheiden sich `-c` und `-b` – schneide dann nach Zeichen, nicht nach Bytes.

## Weiterführende Links

- [GNU coreutils: cut](https://www.gnu.org/software/coreutils/manual/html_node/cut-invocation.html) – offizielle Referenz zu allen Optionen (englisch)
- [ubuntuusers-Wiki: Datenstromtools](https://wiki.ubuntuusers.de/Datenstromtools/) – deutschsprachige Übersicht zu cut, awk, sed und Co.
<!-- PROSE:outro:end -->

## Verwandte Kommandos

- [awk](https://www.jpkc.com/db/cheatsheets/files-text/awk/) – mächtige Textverarbeitung mit Feldern, Bedingungen und Berechnungen
- [paste](https://www.jpkc.com/db/cheatsheets/files-text/paste/) – Zeilen mehrerer Dateien spaltenweise zusammenführen
- [column](https://www.jpkc.com/db/cheatsheets/files-text/column/) – Eingaben in saubere, ausgerichtete Spalten und Tabellen formatieren

