Linux-Befehl „cut“ erklärt

Linux-Befehl „cut“ erklärt

Der Cut-Befehl in Linux und Unix dient dazu, aus jeder Zeile einer Datei einige Teile auszuschneiden und auf der Standardausgabe auszugeben. Mit dem Befehl „Cut“ können wir einen Teil des Inhalts einer Zeichenfolge in Einheiten von Bytes, Zeichen, Feldern (Trennzeichen) usw. extrahieren.

In diesem Artikel lernen wir anhand einiger Beispiele die Verwendung des Cut-Befehls kennen. Diese Verwendungsmethoden werden auch in unserer täglichen Arbeit sehr häufig verwendet.

Cut-Befehl und Syntax

Die grundlegende Syntax des Cut-Befehls lautet wie folgt:

$ cut OPTION… [DATEI]…

Schauen wir uns zunächst einige Optionen von cut an. Der Befehl cut muss mit auszuführenden Optionen angegeben werden.

-f : Extrahiert das angegebene Feld. Der Befehl „cut“ verwendet Tabulatoren als Standardtrennzeichen.

-d : Tabulator ist das Standardtrennzeichen. Verwenden Sie diese Option, um Ihr eigenes Trennzeichen anzugeben.

-b : Extrahiert die angegebenen Bytes oder gibt einen Bereich an.

-c : Extrahiert die angegebenen Zeichen. Dabei kann es sich um eine durch Kommas getrennte Zahlenliste oder einen durch Bindestriche getrennten Zahlenbereich handeln.

–complement : ergänzt den ausgewählten Teil, d. h. kehrt die Auswahl um.

–output-delimiter : Ändert das bei der Ausgabe verwendete Trennzeichen.

--only-delimited : Gibt keine Spalten aus, die keine Trennzeichen enthalten.

Zur Veranschaulichung verwenden wir die folgende Textdatei mit dem Namen context.txt und die Datei /etc/passwd als Beispiele.

$ Katze Inhalt.txt 
Ubuntu Linux
Microsoft Windows
OsX El Capitan
Unix
FreeBSD

So geben Sie das Trennzeichen an

Die am häufigsten verwendeten Optionen sind die Kombination aus -d und -f , die Inhalte basierend auf dem durch -d angegebenen Trennzeichen und den durch -f aufgelisteten Feldern extrahiert.

In diesem Beispiel wird beispielsweise nur das erste Feld jeder Zeile der Datei /etc/passwd gedruckt und als Trennzeichen wird folgendes verwendet :

$ cut -d':' -f1 /etc/passwd
Wurzel
bin
Daemon
adm
lp
synchronisieren
abschalten
Halt
mail
Operator
Spiele
Alvin
liangxu
...

Im folgenden Beispiel drucken wir das erste Feld der Datei content.txt und verwenden Leerzeichen als Trennzeichen.

$ cut -d " " -f 1 inhalt.txt 
Ubuntu
Microsoft
OxY
Unix
FreeBSD

Im folgenden Beispiel extrahieren wir mehrere Felder. Hier extrahieren wir das erste und sechste Feld aus der Zeile, die die Zeichenfolge /bin/bash in der Datei /etc/passwd enthält, unter Verwendung des Doppelpunkts (:) als Trennzeichen.

$ grep "/bin/bash" /etc/passwd | cut -d':' -f1,6
Wurzel:/Wurzel
alvin:/home/alvin

Um einen Feldbereich anzuzeigen, können Sie die Start- und Endfelder durch einen Bindestrich (-) getrennt angeben, wie unten gezeigt:

$ grep "/bin/bash" /etc/passwd | cut -d':' -f1-4,6,7
root:x:0:0:/root:/bin/bash
alvin:x:1000:1000:/home/alvin:/bin/bash

So vervollständigen Sie die ausgewählte Ausgabe

Um die ausgewählten Ausgabefelder zu vervollständigen (d. h., ihre Auswahl aufzuheben), verwenden Sie die Option --complement . Diese Option gibt alle Felder außer den angegebenen Feldern aus.

Das folgende Beispiel druckt alle Felder außer dem zweiten Feld in der Zeile, die /bin/bash in der Datei /etc/passwd enthält:

$ grep "/bin/bash" /etc/passwd | cut -d':' --complement -f2
root:0:0:root:/root:/bin/bash

So geben Sie das Ausgabetrennzeichen an

Verwenden Sie --output-delimiter um das Ausgabetrennzeichen anzugeben. Das Eingabetrennzeichen wird durch -d angegeben und das Ausgabetrennzeichen ist standardmäßig dasselbe wie das Eingabetrennzeichen.

Lassen Sie uns zunächst das folgende Beispiel verwenden, um die Ausgabe zu testen, wenn das Ausgabetrennzeichen nicht angegeben ist.

$ cut -d: -f1,7 /etc/passwd | sort | uniq -u
_apt:/usr/sbin/nologin
Sicherung:/usr/sbin/nologin
bin:/usr/sbin/nologin
daemon:/usr/sbin/nologin
dnsmasq:/usr/sbin/nologin
Spiele:/usr/sbin/nologin
gnats:/usr/sbin/nologin
irc:/usr/sbin/nologin
Landschaft:/usr/sbin/nologin
Liste:/usr/sbin/nologin
lp:/usr/sbin/nologin
lxd:/bin/false

Nun fügen wir die Option --output-delimiter hinzu, um das Ausgabetrennzeichen als Leerzeichen anzugeben:

$ cut -d: -f1,7 --output-delimiter ' ' /etc/passwd | sortieren | uniq -u
_apt /usr/sbin/nologin
Sicherung /usr/sbin/nologin
bin /usr/sbin/nologin
Daemon /usr/sbin/nologin
dnsmasq /usr/sbin/nologin
Spiele /usr/sbin/nologin
Mücken /usr/sbin/nologin
irc /usr/sbin/nologin
Landschaft /usr/sbin/nologin
Liste /usr/sbin/nologin
lp /usr/sbin/nologin
lxd /bin/false

Testen wir ein weiteres Beispiel und verwenden ein Trennzeichen, um ein Feld pro Zeile zu drucken.

Wir geben --output-delimiter als $'\n' an, um eine neue Zeile anzuzeigen.

Die Ausgabe ist:

$ grep root /etc/passwd | cut -d':' -f1,6,7 --output-delimiter=$'\n'
Wurzel
/Wurzel
/bin/bash
Operator
/Wurzel
/sbin/nologin

So extrahieren Sie Inhalte als Zeichen

Mit der Option -c können Sie basierend auf der Zeichenposition extrahieren. Beachten Sie, dass Leerzeichen und Tab ebenfalls als Zeichen behandelt werden.

Drucken Sie das erste Zeichen jeder Zeile der Datei context.txt wie folgt:

$ cut -c 1 inhalt.txt
U
M
O
U
F

Im Folgenden sind die ersten sieben Zeichen jeder Zeile der Datei context.txt dargestellt.

$ cut -c 1-7 inhalt.txt
Ubuntu
Microso
XOt
Unix
FreeBSD

Lassen Sie uns den Test noch einmal durchführen, indem Sie nur die Start- oder Endposition angeben.

Im Folgenden werden die vorletzten Zeichen extrahiert:

$ cut -c2- inhalt.txt
Ubuntu Linux
Microsoft Windows
sX El Capitan
nix
reeBSD

Extrahieren Sie das erste bis vierte Zeichen:

Schnitt -c-4 Inhalt.txt
Ubun
Mikro
OxY
Unix
Frei

So extrahieren Sie byteweise

Verwenden Sie die Option -b , um einen Teil einer Zeile auszuwählen, indem Sie Bytepositionen angeben und dabei die einzelnen angegebenen Positionen durch Kommas oder einen Bereich durch - trennen.

Das folgende Beispiel extrahiert das erste, zweite und dritte Byte jeder Zeile in der Datei content.txt:

$ cut -b 1,2,3 inhalt.txt 
Ubu
Mikrofon
OxY
Uni
Fre

Wir können einen Bereich auch mit dem folgenden Befehl auflisten;

$ cut -b 1-3,5-7 inhalt.txt 
Ubutu 
Micoso
XOtM 
Uni
FreBSD

Einige praktische Beispiele

cut ist ein nützlicher Befehl, der oft in Verbindung mit anderen Linux- oder Unix-Befehlen verwendet wird.

Wenn Sie beispielsweise USER, PID und COMMAND aus dem Befehl ps extrahieren möchten:

ps -L un | tr -s " " | cut -d " " -f 2,3,14-
BENUTZER-PID-BEFEHL
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 un
0 26738 tr -s
0 26739 Schnitt -d -f 2,3,14-

Testen wir ein weiteres Beispiel, um die Gesamt-, verwendeten und freien Werte des Speichers zu extrahieren und in einer Datei zu speichern.

$ free -m | tr -s ' ' | sed '/^Mem/!d' | cut -d" " -f2-4 >> speicher.txt
$ Katze Speicher.txt
985 86 234

Zusammenfassen

Der Cut-Befehl kann über Pipes mit vielen anderen Linux- oder Unix-Befehlen verbunden werden. Zur weiteren Textverarbeitung können ein oder mehrere Filter durchgeleitet werden.

Eine der Einschränkungen des Cut-Befehls besteht darin, dass er die Angabe mehrerer Zeichen als Trennzeichen nicht unterstützt. Mehrere Leerzeichen werden als mehrere Feldtrennzeichen gezählt, daher muss der Befehl „tr“ vor dem Befehl „cut“ verwendet werden, um die gewünschte Ausgabe zu erhalten.

Dies ist das Ende dieses Artikels mit der detaillierten Erklärung des Linux-Befehls „cut“. Weitere relevante Inhalte zum Linux-Befehl „cut“ finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Verwendung des Linux-Befehls gzip
  • Verwendung des Linux-Befehls „userdel“
  • Verwendung des Linux-Datumsbefehls
  • So führen Sie Linux-Befehle im Hintergrund aus
  • Verwendung des Linux-Stat-Befehls
  • Verwendung des Linux-Befehls ls
  • Verwendung des Linux-Befehls ln
  • Verwendung des Linux-Befehls bzip2

<<:  Detaillierte Erläuterung des Organisationsstrukturdiagramms der Vue-Tree-Color-Komponente

>>:  Ein Artikel zum Erlernen von Fähigkeiten zur Optimierung von MySQL-Indexabfragen

Artikel empfehlen

So zeigen Sie das MySQL-Binlog (Binärprotokoll) an

Wenn Sie beispielsweise eine neue Tabelle erstell...

Grundlegende Verwendung und Fallstricke der JavaScript-Array-Methode sort()

Vorwort Bei der täglichen Codeentwicklung gibt es...

Beispielcode zur Implementierung eines Hintergrundunschärfeeffekts mit CSS

Ist es der unten gezeigte Effekt? Wenn ja, lesen ...

Fassen Sie die häufigsten Anwendungsprobleme von XHTML-Code zusammen

Im Laufe der Zeit habe ich festgestellt, dass vie...

Vertieftes Verständnis des Implementierungsprinzips des Require Loader

Vorwort Wir sagen oft, dass Node keine neue Progr...

Detaillierte Darstellung des MySQL 5.7.33-Installationsprozesses

Inhaltsverzeichnis Download des Installationspake...

MySQL 5.7 MySQL-Befehlszeilenclient - Befehlsdetails

MySQL 5.7 MySQL-Befehlszeilenclient mit Befehlen ...

Einige Fragen zu Hyperlinks

<br />Ich freue mich sehr, an dieser Folge d...

Beispielerklärung für Ausführungskontext und Ausführungsstapel in JavaScript

JavaScript - Prinzipienreihe Wenn wir in der tägl...

Der Unterschied zwischen Datenzeit und Zeitstempel in MySQL

In MySQL gibt es drei Datumstypen: Datum (Jahr-Mo...