cut(1) cut(1)
NAME
cut - Felder oder Spalten aus den Zeilen einer Datei herausschneiden
SYNTAX
cut -b liste [-n] [--] [datei ...] Format 1a
cut -c liste [--] [datei ...] Format 1b
cut -f liste [-d zeichen] [-s] [--] [datei ...] Format 2
BESCHREIBUNG
cut liest einen Eingabetext zeilenweise aus Dateien oder von der Stan-
dardeingabe und schneidet aus den Zeilen bestimmte Spalten (Format 1)
oder Felder (Format 2) heraus. Die herausgeschnittenen Spalten bzw.
Felder gibt cut auf die Standardausgabe aus.
OPTIONEN
Format 1: Spalten herausschneiden
cut -b liste [-n] [--] [datei ...]
cut -c liste [--] [datei ...]
-b liste
(b - byte) cut schneidet aus jeder Eingabezeile die in liste
angegebenen Spalten heraus und gibt sie auf die Standardausgabe
aus. Eine Spalte ist genau ein Byte breit.
liste ist eine Liste von Zahlen oder Zahlenbereichen. Die Ele-
mente 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
n- für n - "letzte Spalte"
Beispiel:
1,3,5 cut schneidet jeweils die 1., 3. und 5. Spalte heraus.
1-3,5 cut schneidet jeweils die 1., 2., 3. und 5. Spalte her-
aus.
-3,5 Ist Kurzform für 1. bis 3. und 5. Spalte.
3- Ist Kurzform für 3 bis "letzte Spalte".
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
cut(1) cut(1)
-n Zeichen, die aus mehreren Byte bestehen, werden nicht geteilt.
Intern werden die untere und die obere Grenze von Bereichsangaben
solange reduziert, bis der Bereich nur noch komplette Zeichen
umfaßt.
-c liste
(c - character) cut schneidet aus jeder Eingabezeile die in liste
angegebenen Spalten heraus und gibt sie auf die Standardausgabe
aus. Eine Spalte ist genau ein Zeichen breit.
liste ist eine Liste von Zahlen oder Zahlenbereichen, wie bei der
Option -b beschrieben.
-- Ende der Optionenliste. Die Angabe ist nötig, wenn datei mit -
beginnt.
datei
Name der Eingabedatei. Sie können mehrere Dateien angeben.
datei nicht angegeben: cut liest von der Standardeingabe.
Format 2: Felder herausschneiden
cut -f liste [-d zeichen] [-s] [--] [datei ...]
-f liste
(f - field) cut schneidet aus jeder Eingabezeile die in liste
angegebenen Felder heraus und gibt sie auf die Standardausgabe
aus.
Ein Feld besteht aus den Zeichen, die zwischen zwei Feldtrennzei-
chen stehen. Zwei aufeinanderfolgende Feldtrennzeichen begrenzen
ein leeres Feld. Standard-Feldtrennzeichen ist das Tabulatorzei-
chen. Mit der Option -d können Sie das Feldtrennzeichen umdefi-
nieren.
Die ausgegebenen Felder sind durch je ein Feldtrennzeichen vonei-
nander getrennt. Eingabezeilen ohne Feldtrennzeichen werden nor-
malerweise 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
specialchar(5)], dann müssen Sie zeichen in Hochkommata ein-
schließen: -d 'zeichen'.
-d nicht angegeben: Feldtrennzeichen ist das Tabulatorzeichen.
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
cut(1) cut(1)
-s Zeilen ohne Feldtrennzeichen werden nicht ausgegeben.
-s nicht angegeben:
Zeilen ohne Feldtrennzeichen werden vollständig ausgegeben.
-- Ende der Optionenliste. Die Angabe ist nötig, wenn datei mit -
beginnt.
datei
Name der Eingabedatei. Sie können mehrere Dateien angeben.
datei nicht angegeben: cut liest von der Standardeingabe.
FEHLERMELDUNGEN
ERROR: line too long
Eine Zeile kann maximal 1023 Zeichen oder Felder lang sein. Möglicher-
weise kann auch das Neue-Zeile-Zeichen fehlen.
ERROR: bad list for c/f option
Falsch angegebene liste oder fehlende Option -c oder -f. Es wird kein
Fehler gemeldet, wenn die Zeile weniger Felder hat, als liste fordert.
ERROR: no fields
liste ist leer.
ERROR: no delimiter
Das Feldtrennzeichen zur Option -d fehlt.
ERROR: cannot handle multiple adjacent backspaces
Angrenzende Rückschritt-Zeichen können nicht richtig abgearbeitet wer-
den.
WARNING: cannot open datei
Entweder existiert die Datei datei nicht oder sie kann nicht gelesen
werden. Haben Sie mehrere Dateien angegeben, dann wird mit deren Bear-
beitung fortgefahren.
INTERNATIONALE UMGEBUNG
Die Umgebungsvariable LCMESSAGES bestimmt die Sprache der Meldungs-
texte. Wenn LCMESSAGES nicht oder als leere Zeichenkette definiert
ist, wird der Wert von LANG als Standardwert herangezogen. Ist auch
LANG nicht oder als leere Zeichenkette definiert, verhält sich das
System so, als wäre es nicht internationalisiert.
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98
cut(1) cut(1)
Die Umgebungsvariable LCALL bestimmt die gesamte internationale Umge-
bung. LCALL hat Vorrang vor allen anderen Umgebungsvariablen im
Bereich der Internationalisierung.
BEISPIELE
Beispiel 1
Die ersten 72 Zeichen jeder Eingabezeile ausgeben:
$ cut -c 1-72 datei
Beispiel 2
Die ersten 72 Byte jeder Eingabezeile ausgeben, unter der Bedingung,
daß Mehrbytezeichen nicht geteilt werden:
cut -b 1-71 -n datei
Beispiel 3
Aus den Zeilen der Datei /etc/passwd sollen jeweils das erste (Benut-
zerkennung) und dritte Feld (UID) herausgeschnitten und ausgegeben
werden. Die Felder in dieser Datei sind durch einen Doppelpunkt
getrennt.
$ cut -f 1,3 -d : /etc/passwd
Beispiel 4
Aus der Datei rechnung eines Versandhauses sollen die Namen der Kun-
den, deren Rechnung im Mai 88 fällig ist, zusammen mit dem Rechnungs-
betrag herausgefiltert werden.
Die Datei hat folgenden Inhalt:
Becker Muenchen 10.000 13.05.88
Brauer Nuernberg 7.000 01.07.88
Drechsler Hamburg 8.000 07.05.88
Ebersbusch Stuttgart 450 20.06.88
Die Felder der Tabelle sind durch genau ein Tabulatorzeichen voneinan-
der getrennt und mit Leerzeichen aufgefüllt.
$ grep '\.05\.88' rechnung | cut -f 1,3 > namen
$ cat namen
Becker 10.000
Drechsler 8.000
Erläuterung: grep schreibt alle Zeilen der Datei, die die Zeichenkette
.05.88 enthalten, auf die Standardausgabe. Diese Zeilen erhält cut als
Eingabe und schneidet aus ihnen das erste und dritte Feld heraus. Die
Ausgabe von cut wird in die Datei namen geschrieben.
Seite 4 Reliant UNIX 5.44 Gedruckt 11/98
cut(1) cut(1)
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\.88' rechnung | cut -f 4 > datum
$ paste datum namen | sort
07.05.88 Drechsler 8.000
13.05.88 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 Aus-
gabezeilen aufsteigend nach dem Datum.
SIEHE AUCH
awk(1), grep(1), paste(1), sh(1).
Seite 5 Reliant UNIX 5.44 Gedruckt 11/98