Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.
Der Befehl cut extrahiert spaltenweise Ausschnitte aus Textzeilen. So können bspw. aus einer Logdatei irrelevante Informationen entfernt oder CSV-Dateien bearbeitet werden.
Das Programm ist im Paket
coreutils
von Ubuntu enthalten und deshalb auf jedem System vorinstalliert.
Die allgemeine Syntax lautet [1]:
cut OPTION DATEI
cut
kennt folgende Optionen:
Optionen von cut | |
Option | Beschreibung |
-b oder --bytes | Angabe der Bytepositionen |
-c oder --characters | Angabe der Zeichenpositionen (entspricht derzeit -b ) |
-d oder --delimiter | Angabe der Trennzeichen (Delimiter) |
-f oder --fields | Angabe der zu extrahierenden Felder |
-s oder --only-delimited | Keine Ausgabe von Zeilen ohne Trennzeichen (Delimiter) |
b
, c
oder f
können nicht gemeinsam verwendet werden. Weitere Optionen sind der Manpage zu entnehmen.
In der Datei /etc/passwd stehen die Benutzernamen in der ersten Spalte. Diese Datei enthält jedoch auch weitere Informationen:
root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh …
Der folgende Befehl führt dazu, dass nur die Benutzernamen ausgegeben werden:
cut -d: -f1 /etc/passwd
root daemon bin …
-d:
beschreibt dabei das Zeichen, das die Felder trennt. Im Beispiel ist das der Doppelpunkt. -f1
zeigt an, dass nur das erste Feld ausgegeben werden soll, in diesem Fall der Benutzername. Auch mehrere, getrennte Felder können angezeigt werden:
cut -d: -f1,7 /etc/passwd
root:/bin/bash daemon:/bin/sh bin:/bin/sh …
Der folgende Befehl zeigt mehrere Spalten einer Ausgabe an, deren Felder durch Leerzeichen getrennt sind. Konkret werden dabei Betriebssystem und Kernelversion aus der Ausgabe des Befehls uname -a
extrahiert:
uname -a
Linux nutzer-laptop 3.2.0-030200-generic #201201042035 SMP Thu Jan 5 01:36:31 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
uname -a | cut -d" " -f1,3,12
Linux 3.2.0-030200-generic x86_64
Absolute Positionsangaben können ebenfalls verwendet werden. Im folgenden Beispiel werden aus der Liste aller laufenden Prozesse die PIDs augeschnitten. Diese stehen in den Spalten 9 bis 14:
ps huax | cut -c 9-14
Positionsangaben müssen nicht durch vorbestimmte Endpunkte bestimmt sein:
echo "123456789" | cut -c 5-
56789
Durch eine Kombination von Befehlen kann cut
auf jedes Zeichen einer Datei zugreifen. Mit dem folgenden Befehl wird das dritte Wort der 6. Zeile der Datei datei.txt extrahiert. Es werden dabei zunächst mit head
die ersten 6 Zeilen ausgeschnitten, dann mit tail
die letzte dieser verbleibenden Zeilen und schließlich mit cut
deren drittes Wort:
cat datei.txt | head -6l | tail -1l | cut -d" " -f3
Unix-Texttools – Online-Anleitung
Shell/Befehlsübersicht Übersicht über verschiedene Shell-Befehle
Diese Revision wurde am 17. Oktober 2015 00:21 von mrkramps erstellt.