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

MySQL 8.0.11 Installationshandbuch für Mac

MAC installiert mysql8.0, der spezifische Inhalt ...

Verwenden von js zum Implementieren eines einfachen Lichtschaltercodes

Körperteil: <button>Licht ein-/ausschalten&...

Zusammenfassung der MySQL-Injection-Bypass-Filtertechniken

Schauen wir uns zunächst den GIF-Vorgang an: Fall...

Zusammenfassung häufiger Probleme und Lösungen in Vue (empfohlen)

Es gibt einige Probleme, die nicht auf Vue beschr...

Details zur Verwendung von Klassenstilen in Vue

Inhaltsverzeichnis 1. Boolesche Werte 2. Ausdruck...

CSS zur Erzielung einer kompatiblen Textausrichtung in verschiedenen Browsern

Beim Front-End-Layout des Formulars müssen wir hä...

Detaillierte Erläuterung der sechs gängigen Einschränkungstypen in MySQL

Inhaltsverzeichnis Vorwort 1.nichtnull 2. einziga...

Vue imitiert den Formularbeispielcode von ElementUI

Implementierungsanforderungen Das ElementUI imiti...

Ein Beispiel für die Implementierung eines adaptiven Quadrats mit CSS

Die traditionelle Methode besteht darin, ein Quad...

Allgemeine Tags in XHTML

Was sind XHTML-Tags? XHTML-Tag-Elemente sind die ...