cut
Der Shell-Befehl cut schneidet einen angegebenen Teil aus einer Textdatei heraus.
Optionen
-c<liste> | (column) Herausschneiden der in "liste" angegebenen Spalten und Anzeige auf der Standardausgabe. Eine Spalte ist genau ein Zeichen breit. "liste" ist eine Liste von Zahlen oder Zahlenbereichen.
| ||||||||
-f<liste> | (field) Herausschneiden der in "liste" angegebenen Felder aus jeder Zeile und Anzeige auf der Standardausgabe. Ein Feld besteht aus den Zeichen, die zwischen zwei Feldtrennzeichen stehen. Standard-Feldtrennzeichen ist das Tabulatorzeichen. | ||||||||
-d<zeichen> | Feldtrennzeichen ist das Zeichen "zeichen". Ist das Feldtrennzeichen das Leerzeichen oder ein Shell-Sonderzeichen, so muss es in Hochkommas eingeschlossen werden (z. B. -c' ' ). | ||||||||
-s<zeichen> | Zeilen ohne Feldtrennzeichen werden nicht ausgegeben. |
Verwendung
Auswahl der durch ":" getrennten Felder Benutzername (1. Feld) und Klartextnamen (5. Feld) aus der Datei "/etc/passwd".
$ cut -d: -f1,5 /etc/passwd
Auswahl des Zeichens in der vierten Spalte von Datei "file". Dieses Zeichen wird als erste Spalte in dieselbe Datei wieder eingefügt.
$ cut -c4 file | paste - file
Auswahl der Byte-Positionen 5-9 jeder Zeile von Datei "file".
$ cut -b5-9 file
Beispiel
Aus der Datei "rechnung" sollen die Namen der Kunden, deren Rechnung im Mai 1998 fällig ist, zusammen mit dem Rechnungsbetrag herausgefiltert werden. Die Felder der Datei "rechnung" sind durch genau ein Tabulatorzeichen voneinander getrennt und mit Leerzeichen aufgefüllt.
$ vi rechnung Meier Bern 10.000 13.05.1998 Schmid Basel 7.000 01.07.1998 Müller Genève 8.000 07.05.1998 Huber Zürich 450 20.06.1998
Mit grep werden alle Zeilen der Datei "rechnung", welche die Zeichenkette "05.1998" enthalten auf die Standardausgabe geschrieben. cut erhält diese Zeilen als Eingabe, schneidet aus ihnen das erste und dritte Feld heraus (Name und Rechnungsbetrag) und schreibt die Ausgabe in die Datei "namen".
$ grep '\.05\.1998' rechnung | cut -f1,3 > namen $ more namen Meier 10.000 Müller 8.000
Zusätzlich soll den Kundennamen das Datum vorangestellt und danach das Ergebnis nach Rechnungsdatum sortiert werden. Dabei wird zuerst das zu den ausgewählten Kundennamen gehörige Datum in die Datei "datum" geschrieben. Mit paste werden die Dateien "datum" und "namen" dann horizontal, getrennt durch ein Tabulatorzeichen, zusammengefügt. sort sortiert die Ausgabezeilen dann aufsteigend nach Datum.
$ grep '\.05\.1998' rechnung | cut -f4 datum > datum $ paste datum namen | sort 07.05.1998 Müller 8.000 13.05.1998 Meier 10.000