Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

cut - Bytes, Zeichen oder Felder aus den Zeilen einer Datei ausschneiden

&pagelevel(4)&pagelevel

(cut out selected fields of each line of a file)


cut liest einen Eingabetext zeilenweise aus Dateien oder von der Standard-Eingabe und schneidet aus den Zeilen bestimmte Bytes (Format 1), Zeichen (Format 2) oder Felder (Format 3) aus. Die ausgeschnittenen Elemente gibt cut auf die Standard-Ausgabe aus.


Syntax


Format 1: cut -b liste[ -n][ datei ...]
Format 2: cut -c liste[ datei ...]
Format 3: cut -f liste[ -d zeichen][ -s][ datei ...]



Bytes ausschneiden
Format 1: cut -b liste[ -n][ datei ...]


-b liste

(b - bytes)
cut schneidet aus jeder Eingabezeile die Bytes aus, die in der bei liste angegebenen Position stehen und gibt sie auf die Standard-Ausgabe aus. liste ist eine Liste von Zahlen oder Zahlenbereichen. Die Elemente der Liste müssen durch Kommas getrennt und in aufsteigender Reihenfolge angeordnet sein. Ein Bereich n1-n2 bezieht sich auf alle Zahlen von n1 bis n2 einschließlich.

Bei Bereichsangaben sind folgende Kurzformen zulässig:

-n

für 1- n und

n -

für n -„letzte Spalte“

Beispiel:


1,3,5cut schneidet jeweils die 1., 3. und 5. Spalte aus.
1-3,5cut schneidet jeweils die 1., 2., 3. und 5. Spalte aus.
-3,5ist Kurzform für 1-3,5
3-ist Kurzform für 3-„letzte Spalte“


-n

Ein Zeichen, das aus mehreren Bytes bestehen kann, wird nicht byteweise ausgeschnitten. Jedes Zeichen von liste, das als Bereich n1-n2 angegeben wird, wird folgendermaßen behandelt:

Ist n1 nicht das erste Byte des Zeichens, wird n1 herabgesetzt, um das erste Byte des Zeichens auszuschneiden.
Ist n2 nicht das letzte Byte des Zeichens, wird n2 herabgesetzt.
Es wird das letzte Zeichen vor n2 ausgewählt. n2 wird auf Null gesetzt, wenn es kein vorhergehendes Zeichen gibt.

datei

Name der Eingabedatei. Sie können mehrere Dateien angeben.

datei nicht angegeben:
cut liest von der Standard-Eingabe.


Zeichen ausschneiden
Format 2: cut -c liste[ datei ...]


-c liste

(c - character)
cut schneidet aus jeder Eingabezeile die Zeichen aus, die in der bei liste angegebenen Position stehen und gibt sie auf die Standard-Ausgabe aus. Eine Spalte ist genau ein Zeichen breit.

liste hat die unter Format 1 beschriebene Form.

datei

Name der Eingabedatei. Sie können mehrere Dateien angeben.

datei nicht angegeben:
cut liest von der Standard-Eingabe.


Felder ausschneiden
Format 3: cut -f liste[ -d zeichen][ -s][ datei ...]


-f liste

(f - field)
cut schneidet aus jeder Eingabezeile die in liste angegebenen Felder aus und gibt sie auf die Standard-Ausgabe aus.
Ein Feld besteht aus den Zeichen, die zwischen zwei Feldtrennzeichen stehen. Zwei aufeinanderfolgende Feldtrennzeichen begrenzen ein leeres Feld. Standard-Feldtrennzeichenist das Tabulatorzeichen. Mit der Option -d können Sie das Feldtrennzeichen umdefinieren.
Die ausgegebenen Felder sind durch je ein Feldtrennzeichen voneinander getrennt.
Eingabezeilen ohne Feldtrennzeichen werden normalerweise vollständig ausgegeben (Ausnahme: Option -s). Dies ist bei Tabellentiteln nützlich.

liste hat die unter Format 1 beschriebene Form.

-d zeichen

Feldtrennzeichen ist das Zeichen zeichen.
Ist zeichen das Leerzeichen oder ein Shell-Sonderzeichen (siehe Tabellen und Verzeichnisse, Sonderzeichen der POSIX-Shell sh), dann müssen Sie zeichen in Hochkommata einschließen: -d zeichen’.

-d nicht angegeben:
Feldtrennzeichen ist das Tabulatorzeichen.

-s

Zeilen ohne Feldtrennzeichen werden nicht ausgegeben.

-s nicht angegeben:
Zeilen ohne Feldtrennzeichen werden vollständig ausgegeben.

datei

Name der Eingabedatei. Sie können mehrere Dateien angeben.

datei nicht angegeben:
cut liest von der Standard-Eingabe.

Fehler

ERROR: line too long

Eine Zeile kann maximal 1023 Zeichen oder Felder lang sein. Möglicherweise kann auch das Neue-Zeile-Zeichen fehlen.


cut: Bad list for b/c/f option

Falsch angegebene liste oder fehlende Option -b, -c oder -f. Es wird kein Fehler gemeldet, wenn die Zeile weniger Felder hat, als liste fordert.


cut: No delimiter

Das Feldtrennzeichen zur Option -d fehlt.


ERROR: cannot handle multiple adjacent backspaces

Angrenzende Rückschritt-Zeichen können nicht richtig abgearbeitet werden.


cut: Cannot open datei
Entweder existiert die Datei datei nicht oder sie kann nicht gelesen werden. Haben Sie mehrere Dateien angegeben, dann wird mit deren Bearbeitung fortgefahren.

Internationale Umgebung

Die folgenden Umgebungsvariablen beeinflussen die Ausführung des Kommandos cut:

LANG

Gibt einen Standardwert für die Variablen für die internationale Umgebung an, die nicht gesetzt oder Null sind. Ist LANG nicht gesetzt oder Null, wird der entsprechende Standardwert der internationalen Umgebung verwendet. Enthält eine der Internationalisierungsvariablen eine ungültige Einstellung, verhält sich das Kommando so, als sei keine der Variablen definiert worden.

LC_ALL

Ist diese Variable auf einen Wert gesetzt, d. h. ist sie nicht leer, überschreibt dieser Wert die Werte aller übrigen Internationalisierungsvariablen.

LC_CTYPE

Legt die internationale Umgebung für die Interpretation der Byte-Folgen eines Datentexts als Zeichen fest (z.B. Singlebytezeichen im Unterschied zu Mehrbytezeichen in Argumenten).

LC_MESSAGES

Legt die internationale Umgebung für Format und Inhalt der Diagnosemeldungen fest, die in die Standardfehlerausgabe geschrieben werden.

NLSPATH

Legt den Pfad der Meldungsdateien für LC_MESSAGES fest.

Beispiel 1

Die ersten 72 Zeichen jeder Eingabezeile ausgeben:

$ cut -c1-72 datei

Beispiel 2

Aus den Zeilen der Datei /etc/group sollen jeweils das erste (Gruppenname) und dritte Feld (Gruppennummer) ausgeschnitten und ausgegeben werden. Die Felder in dieser Datei sind durch einen Doppelpunkt getrennt.

$ cut -f1,3 -d: /etc/group

Beispiel 3

Aus der Datei rechnung eines Versandhauses sollen die Namen der Kunden, deren Rechnung im Mai 05 fällig ist, zusammen mit dem Rechnungsbetrag ausgefiltert werden.
Die Datei hat folgenden Inhalt:

Becker          Muenchen        10.000          13.05.05
Brauer          Nuernberg        7.000          01.07.05
Drechsler       Hamburg          8.000          07.05.05
Ebersbusch      Stuttgart          450          20.06.05

Die Felder der Tabelle sind durch genau ein Tabulatorzeichen voneinander getrennt und mit Leerzeichen aufgefüllt.

$ grep '\.05\.05' rechnung | cut -f1,3 > namen
$ cat namen
Becker          10.000
Drechsler        8.000

Erläuterung:
grep schreibt alle Zeilen der Datei, die die Zeichenkette .05.05 enthalten, auf die Standard-Ausgabe. Diese Zeilen erhält cut als Eingabe und schneidet aus ihnen das erste und dritte Feld aus. Die Ausgabe von cut wird in die Datei namen geschrieben.

Wollen Sie den Kundennamen in der Datei namen zusätzlich das Datum voranstellen und dann das Ergebnis nach dem Datum sortieren, dann geben Sie ein:

$ grep '\.05\.05' rechnung | cut -f 4 > datum
$ paste datum namen | sort
07.05.05        Drechsler        8.000
13.05.05        Becker          10.000

Erläuterung:
Mit der ersten Kommandozeile schreiben Sie das Datum, das zu den ausgewählten Kundennamen gehört, in die Datei datum. Der paste-Aufruf fügt die Zeilen der Dateien datum und namen horizontal, getrennt durch ein Tabulatorzeichen, zusammen. sort sortiert die Ausgabezeilen aufsteigend nach dem Datum.

Siehe auch

awk, grep, paste