Linux / Befehl cut: Zeichen und Felder extrahieren

cut wählt bestimmte Bytes, Zeichen oder durch Trennzeichen getrennte Felder aus jeder Eingabezeile aus und gibt sie aus. Es ist praktisch für einfache Spaltenextraktionen, aber kein komplexes CSV-Analysewerkzeug.

Im Feldmodus verwendet -f standardmäßig einen Tabulator als Trennzeichen. Um einen Doppelpunkt oder ein Komma zu verwenden, geben Sie auch -d an. Wählen Sie -c oder -b unter Berücksichtigung der Implementierung und der Zeichencodierung.

Grundlegende Syntax

cut -d 'delimiter' -f field_number [file...]

Installierte Implementierungen und Optionen können je nach Distribution variieren. Prüfen Sie die Beschreibung für Ihr System mit man cut.

Beispiele

Extrahieren von durch Doppelpunkte getrennten Feldern

Extrahieren Sie das erste Feld aus der Systemkontenliste.

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

Auswahl mehrerer Felder

Mit Kommas angegebene Felder werden in der Reihenfolge der ursprünglichen Eingabe ausgegeben.

cut -d ':' -f 1,7 /etc/passwd

Zeichenbereich extrahieren

Verwendet, wenn man den Anfang jeder Zeile betrachtet.

cut -c 1-8 sample.txt

Ergebnisse der Feldextraktion unter Verwendung eines Trennzeichens

Dies ist ein Beispiel dafür, nur das erste Feld aus zwei durch einen Doppelpunkt getrennten Zeilen zu extrahieren. -d ist das Trennzeichen, und -f ist die auszuwählende Feldnummer.

printf 'alpha:100\nbeta:200\n' | cut -d: -f1

Beispielausgabe:

alpha
beta

cut -d ' ' -f2 kann Text mit mehreren aufeinanderfolgenden Leerzeichen nicht zuverlässig spalten. Für solche Daten ist awk geeignet. Formate, bei denen ein Trennzeichen in Anführungszeichen vorkommen kann, wie CSV, können nicht genau allein von cut verarbeitet werden, daher sollte ein spezieller CSV-Parser verwendet werden.

Hauptoptionen und Format

Optionen/Format Beschreibung
-d delimiter Geben Sie das Feldtrennzeichenzeichen an.
-f list Wählt die Feldnummer oder den Bereich zur Ausgabe aus.
-c list Wählt Zeichenpositionen aus.
-b list Wählt Byte-Positionen aus.
-s Druckt keine Zeilen ohne Feldtrennzeichen.

Vorsichtsmaßnahmen bei der Verwendung

cut -d ',' versteht keine Kommas innerhalb von Anführungszeichen oder mehrzeilige CSV-Felder. Für solche Daten verwenden Sie einen CSV-spezifischen Parser. Zeilen ohne Trennzeichen werden standardmäßig unverändert ausgegeben, daher fügen Sie bei Bedarf -s hinzu.

Häufig gestellte Fragen

Können auch mehrere durch Leerzeichen getrennte Spalten mit cut extrahiert werden?

Wenn die Breite aufeinanderfolgender Leerzeichen inkonsistent ist, können die Feldnummern nicht korrekt ausgerichtet sein. Solche Eingaben werden normalerweise besser von awk verarbeitet.

Offizielle Dokumentation

Sie können das genaue Verhalten der Optionen und Implementierungsunterschiede in der offiziellen Cut-Dokumentation nachprüfen.