Der Befehl cut wird in Linux- und Unix-Systemen verwendet, um Teile und Abschnitte aus jeder Zeile einer Datei auszuschneiden und das Ergebnis in die Standardausgabe zu schreiben. Es kann verwendet werden, um Teile einer Zeile nach Byte-Position, Zeichen und Feld (Trennzeichen) auszuschneiden.
In diesem Tutorial lernen wir den Linux-Befehl cut mit einigen praktischen Beispielen kennen, die Sie bei Ihren täglichen Befehlszeilenaktivitäten verwenden können.
Cut-Befehl und Syntax
Die grundlegende Syntax für den Befehl cut lautet wie folgt:
cut OPTION... [FILE]...
Lassen Sie uns die Schnittoptionen überprüfen und ohne Option funktioniert der Schnittbefehl nicht.
Schnittoptionen
-f
: Extrahieren durch Angabe eines Felds. Der Befehl “Ausschneiden” verwendet “TAB” als Standardfeldtrennzeichen.
-d
: ‘Tabulator’ ist das Standardtrennzeichen und mit dieser Option können Sie ein bestimmtes Trennzeichen verwenden.
-b
: Zum Extrahieren durch Angabe eines Bytes. Der Byte-Bereich kann ebenfalls angegeben werden.
-c
: Zum Schneiden nach Zeichen. Dies kann eine Liste mit durch Kommas getrennten Zahlen oder ein durch einen Bindestrich (-) getrennter Zahlenbereich sein.
–complement
: Dies wird die Auswahl ergänzen
–output-delimiter
: Um das Ausgabetrennzeichen zu ändern, verwenden Sie die Option -output-delimiter=”delimiter”.
--only-delimited
: Cut druckt keine Zeilen, die keine Trennzeichen enthalten
Wir werden in diesem Tutorial die folgende Textdatei namens ‘content.txt’ und /etc/passwd verwenden, um unsere Beispiele zu veranschaulichen.
$ cat content.txt
Ubuntu Linux
Microsoft Windows
OsX El Capitan
Unix
FreeBSD
So schneidet man nach Trennzeichen
Die am häufigsten verwendete Schnittoption ist eine Kombination aus -d
und -f
. Es extrahiert grundsätzlich Inhalte basierend auf bestimmten Trennzeichen und aufgelisteten Feldern.
Für example Im Folgenden wird nur das erste Feld jeder Zeile aus der Datei ‘/etc/passwd’ mit dem Trennzeichen (:) gedruckt.
$ cut -d':' -f1 /etc/passwd
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator
games
...
Die folgende example wobei wir Leerzeichen (” “) als Trennzeichen verwenden und das erste Feld aus der Datei ‘content.txt’ ausschneiden.
$ cut -d " " -f 1 content.txt
Ubuntu
Microsoft
OsX
Unix
FreeBSD
Dies example, extrahiert mehr als ein Feld aus einer bestimmten Datei. Hier extrahieren wir das 1. und 6. Feld mit Doppelpunkt (:) als Trennzeichen aus der Datei ‘/etc/passwd’ mit der Zeichenfolge ‘/bin/bash’:
$ grep "/bin/bash" /etc/passwd | cut -d':' -f1,6
root:/root
slax:/home/slax
Um den Bereich der Felder anzuzeigen, geben Sie das Startfeld und das Endfeld getrennt durch einen Bindestrich (-) an, wie unten gezeigt:
$ grep "/bin/bash" /etc/passwd | cut -d':' -f1-4,6,7
root:x:0:0:/root:/bin/bash
slax:x:1000:1000:/home/slax:/bin/bash
So ergänzen Sie die Ausgabeauswahl
Zur Ergänzung der Auswahlfeldliste verwenden Sie --complement
Möglichkeit. Mit dieser Option wurden alle Felder außer den angegebenen Feldern ausgewählt.
Im Folgenden example Der Befehl druckt alle Felder außer dem 2. Feld in der Datei von ‘/etc/passwd’:
$ grep "/bin/bash" /etc/passwd | cut -d':' --complement -f2
root:0:0:root:/root:/bin/bash
So geben Sie ein Ausgabetrennzeichen an
Um das Ausgabetrennzeichen anzugeben, verwenden Sie das --output-delimiter
Möglichkeit. Eingabetrennzeichen wird angegeben durch -d
Option und standardmäßig ist das Ausgabetrennzeichen dasselbe wie das Eingabetrennzeichen.
Lassen Sie uns zunächst die Ausgabe überprüfen, ohne das Ausgabetrennzeichen wie folgt zu verwenden:
$ cut -d: -f1,7 /etc/passwd | sort | uniq -u
_apt:/usr/sbin/nologin
backup:/usr/sbin/nologin
bin:/usr/sbin/nologin
daemon:/usr/sbin/nologin
dnsmasq:/usr/sbin/nologin
games:/usr/sbin/nologin
gnats:/usr/sbin/nologin
irc:/usr/sbin/nologin
landscape:/usr/sbin/nologin
list:/usr/sbin/nologin
lp:/usr/sbin/nologin
lxd:/bin/false
Jetzt habe ich hinzugefügt --output-delimiter
Option und Eingabetrennzeichen Doppelpunkt (:) wird wie folgt durch Ausgabetrennzeichen ‘SPACE’ ersetzt:
$ cut -d: -f1,7 --output-delimiter ' ' /etc/passwd | sort | uniq -u
_apt /usr/sbin/nologin
backup /usr/sbin/nologin
bin /usr/sbin/nologin
daemon /usr/sbin/nologin
dnsmasq /usr/sbin/nologin
games /usr/sbin/nologin
gnats /usr/sbin/nologin
irc /usr/sbin/nologin
landscape /usr/sbin/nologin
list /usr/sbin/nologin
lp /usr/sbin/nologin
lxd /bin/false
Lass uns einen anderen überprüfen example, hier verwenden wir Ausgabetrennzeichen, um auf jedes Feld in einer neuen Zeile zu drucken.
Hier verwenden wir --output-delimiter
wie $’n’
was auf eine neue Zeile hinweist.
Überprüfen Sie die Ausgabe:
$ grep root /etc/passwd | cut -d':' -f1,6,7 --output-delimiter=
Wie schneidet man nach cCharaktere
Der -c
(Spalte) Option wird zum Schneiden nach Zeichenposition verwendet. Denken Sie daran, dass ‘TABS’ und ‘Leerzeichen’ auch als Zeichen behandelt werden.
Um das erste Zeichen aus jeder Zeile aus der Datei namens content.txt zu drucken, verwenden Sie Folgendes:
$ cut -c 1 content.txt
U
M
O
U
F
Im Folgenden example wir werden die Zeichen 1 bis 7 (Bereich) jeder Zeile aus der Datei anzeigen:
$ cut -c 1-7 content.txt
Ubuntu
Microso
OsX El
Unix
FreeBSD
Sehen wir uns an, wie Sie Spalten entweder nach einer bestimmten Start- oder Endposition auswählen.
So extrahieren Sie Spalten vom 2. Zeichen bis zum letzten Zeichen:
$ cut -c2- content.txt
buntu Linux
icrosoft Windows
sX El Capitan
nix
reeBSD
So extrahieren Sie Spalten vom 1. Zeichen bis zum 4. Zeichen:
cut -c-4 content.txt
Ubun
Micr
OsX
Unix
Free
So schneiden Sie nach Bytes
Verwenden Sie die -b
Option zum Auswählen eines Teils einer Zeile durch Angabe einer Byteposition durch durch Komma (,) getrennte Zahlen. Mit Bindestrich können Sie einen Bereich von Bytes angeben.
Die folgende example aus dem 1., 2. und 3. Byte aus der Datei ‘content.txt’ ausschneiden:
$ cut -b 1,2,3 content.txt
Ubu
Mic
OsX
Uni
Fre
Wir können mit dem folgenden Befehl auch mit Bereichen auflisten:
$ cut -b 1-3,5-7 content.txt
Ubutu
Micoso
OsXEl
Uni
FreBSD
Einige praktische Schnittbeispiele
Cut wird am praktischsten mit einer Kombination verschiedener Linux- oder Unix-Befehle verwendet.
Für example, möchten Sie ‘USER’, ‘PID’ und “COMMAND” mit dem ps-Befehl extrahieren:
ps -L u n | tr -s " " | cut -d " " -f 2,3,14-
USER PID COMMAND
0 676 /sbin/agetty -o -p -- u --keep-baud 115200,38400,9600 ttyS0 vt220
0 681 /sbin/agetty -o -p -- u --noclear tty1 linux
0 23174 -bash
0 26737 ps -L u n
0 26738 tr -s
0 26739 cut -d -f 2,3,14-
Nehmen wir einen anderen example um den ‘gesamten’, ‘verwendeten’ und ‘freien’ Wert des Speichers zu extrahieren und mit mehreren Befehlen in einer Textdatei zu speichern:
$ free -m | tr -s ' ' | sed '/^Mem/!d' | cut -d" " -f2-4 >> memory.txt
Output
$ cat memory.txt
985 86 234
Fazit
Der Befehl cut kann mit vielen anderen Linux- oder Unix-Befehlen geleitet werden. Es kann mit einem oder mehreren Filtern zur zusätzlichen Textverarbeitung geleitet werden.
Eine der Einschränkungen des Cut-Befehls besteht darin, dass er nicht mehr als ein Zeichen als Trennzeichen unterstützt. Mehrere Leerzeichen werden als mehrere Feldtrennzeichen gezählt und müssen vor dem Ausschneiden den Befehl tr verwenden, um die gewünschte Ausgabe zu erhalten.
n' root /root /bin/bash operator /root /sbin/nologin
Wie schneidet man nach cCharaktere
Der -c
(Spalte) Option wird zum Schneiden nach Zeichenposition verwendet. Denken Sie daran, dass ‘TABS’ und ‘Leerzeichen’ auch als Zeichen behandelt werden.
Um das erste Zeichen aus jeder Zeile aus der Datei namens content.txt zu drucken, verwenden Sie Folgendes:
Im Folgenden example wir werden die Zeichen 1 bis 7 (Bereich) jeder Zeile aus der Datei anzeigen:
Sehen wir uns an, wie Sie Spalten entweder nach einer bestimmten Start- oder Endposition auswählen.
So extrahieren Sie Spalten vom 2. Zeichen bis zum letzten Zeichen:
So extrahieren Sie Spalten vom 1. Zeichen bis zum 4. Zeichen:
So schneiden Sie nach Bytes
Verwenden Sie die -b
Option zum Auswählen eines Teils einer Zeile durch Angabe einer Byteposition durch durch Komma (,) getrennte Zahlen. Mit Bindestrich können Sie einen Bereich von Bytes angeben.
Die folgende example aus dem 1., 2. und 3. Byte aus der Datei ‘content.txt’ ausschneiden:
Wir können mit dem folgenden Befehl auch mit Bereichen auflisten:
Einige praktische Schnittbeispiele
Cut wird am praktischsten mit einer Kombination verschiedener Linux- oder Unix-Befehle verwendet.
Für example, möchten Sie ‘USER’, ‘PID’ und “COMMAND” mit dem ps-Befehl extrahieren:
Nehmen wir einen anderen example um den ‘gesamten’, ‘verwendeten’ und ‘freien’ Wert des Speichers zu extrahieren und mit mehreren Befehlen in einer Textdatei zu speichern:
Fazit
Der Befehl cut kann mit vielen anderen Linux- oder Unix-Befehlen geleitet werden. Es kann mit einem oder mehreren Filtern zur zusätzlichen Textverarbeitung geleitet werden.
Eine der Einschränkungen des Cut-Befehls besteht darin, dass er nicht mehr als ein Zeichen als Trennzeichen unterstützt. Mehrere Leerzeichen werden als mehrere Feldtrennzeichen gezählt und müssen vor dem Ausschneiden den Befehl tr verwenden, um die gewünschte Ausgabe zu erhalten.