Der Befehl cut

cut-featured

In diesem Beitrag lernen Sie den Befehl cut kennen, welcher unter UNIX- / Linux-Betriebssystemen eingesetzt wird, um Informationen aus Textdateien spaltenweise auszuschneiden. Der Befehl ermöglicht so etwa die Extrahierung von wichtigen bzw. das Entfernen von unwichtigen Informationen aus Logdateien. Als Teil des essenziellen Pakets coreutils ist cut auf den meisten Systemen bereits vorinstalliert.

Allgemeine Syntax

Die allgemeine Syntax von cut lautet folgendermaßen:

cut [Optionen] [Datei(en)]

cut kann nicht ohne Angabe von Optionen ausgeführt werden, da diese unter anderem auch der Auswahl auszugebender Bytes, Zeichen oder Felder dienen (siehe Abschnitt "Wichtige Optionen"). Die Angabe des zu verwendenden Eingabetextes ist durch Übergabe einer oder mehrerer Dateien möglich. Alternativ kann auch vom Standard-Input stdin gelesen werden - hierzu muss anstelle der Dateien ein Minuszeichen "-" übergeben werden.

Wichtige Optionen

Dieser Abschnitt stellt die wichtigsten Optionen des Befehls cut vor. Es ist zu beachten, dass immer mindestens genau eine der drei Optionen -b, -c und -f angegeben werden muss. Diese drei Optionen können nicht untereinander kombiniert werden.

-b - Bytes auswählen

Die Option -b dient der Auswahl der Positionen von Bytes, die von cut ausgegeben werden sollen.

cut -b [Liste] [Datei(en)]

Die Positionen dieser Bytes werden dabei in Form einer kommagetrennten Liste an Bereichen angegeben. Ein Bereich kann wie folgt angegeben werden:

Bereich

Beschreibung

N

Spezifiziert das N-te Byte, Zeichen oder Feld.

N-

Spezifiziert alle Bytes, Zeichen oder Felder ab dem N-ten.

N-M

Spezifiziert alle Bytes, Zeichen oder Felder ab dem N-ten bis (inklusive) zum M-ten.

-M

Spezifiziert alle Bytes, Zeichen oder Felder ab dem ersten bis (inklusive) zum M-ten.

-c - Zeichen auswählen

Mithilfe der Option -c können die Positionen der Zeichen ausgewählt werden, die von cut ausgegeben werden sollen. Die Positionen der Zeichen werden genauso wie bei der Option -b angegeben.

cut -c [Liste] [Datei(en)]

-d - Delimiter spezifizieren

Der für die Aufteilung in Felder verwendete Delimiter (Trennzeichen) kann mithilfe der Option -d spezifiziert werden. Standardmäßig wird der Tabulator als Delimiter verwendet.

cut -d [Delimiter] [Datei(en)]

-f - Felder auswählen

Die Option -f ermöglicht die Auswahl an Feldern, die von cut ausgegeben werden sollen. Felder werden dabei durch einen Delimiter voneinander getrennt - standardmäßig ist das der Tabulator (siehe Option -d). Standardmäßig wird außerdem jede Zeile ausgegeben, die den Delimiter nicht enthält. Auch hier werden die Positionen wieder so angegeben, wie bei der Option -b.

cut -f [Liste] [Datei(en)]
Beispiel: Option -f

Dieses Beispiel zeigt das Extrahieren eines einzelnen Feldes aus der /etc/passwd mithilfe der Option -f von cut. Die Felder der /etc/passwd sind durch Doppelpunkte ":" voneinander getrennt, weswegen hier zusätzlich auch die Option -d eingesetzt wird.
Inhalt /etc/passwd:

Im Folgenden sind die ersten vier Zeilen der hier verwendeten /etc/passwd zu sehen. Zugunsten einer besseren Übersicht betrachten wir die übrigen Zeilen der Datei nicht.

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin

Eingabe:

Es wird nun cut aufgerufen, wobei neben dem Dateinamen auch die Option -d mit dem Doppelpunkt ":" sowie die Option -f mit einer 1 übergeben werden. Die Felder werden somit mit dem Doppelpunkt ":" getrennt und das erste Feld extrahiert.

cut -d : -f 1 /etc/passwd

Nach Ausführung:

In der Ausgabe sind nun zeilenweise die ersten Felder der Einträge bzw. die Benutzernamen aus der /etc/passwd zu sehen.

root
daemon
bin
sys

-s - Zeilen ohne Trennzeichen ignorieren

Das Standardverhalten, bei dem Zeilen ohne Trennzeichen einfach ausgegeben werden, lässt sich mithilfe der Option -s deaktivieren. Stattdessen werden solche Zeilen dann ignoriert und sind nicht länger Teil der Ausgabe.

cut -s [Datei(en)]

-z - Zeilen mit Nullbyte trennen

Standardmäßig werden Zeilen mit dem Zeilenumbruch getrennt. Mit der Option -z lässt sich stattdessen die Verwendung des Nullbyte (NUL) für die Trennung der Zeilen aktivieren.

cut -z [Datei(en)]

Abonniere JETZT unseren Newsletter!


Verpasse nie wieder neue Beiträge und exklusive Insider-Only-Inhalte!

Joel Benseler

Click Here to Leave a Comment Below

Leave a Comment: