GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Linux-Cut-Befehl mit praktischen Beispielen

Der Befehl cut wird in Linux- und Unix-Systemen verwendet, um Teile und Abschnitte aus jeder Zeile einer Datei auszuschneiden und das Ergebnis auf die Standardausgabe zu schreiben. Es kann verwendet werden, um Teile einer Zeile nach Byte-Position, Zeichen und Feld (Trennzeichen) abzuschneiden.

In diesem Tutorial lernen wir den Linux-Cut-Befehl mit einigen praktischen Beispielen kennen, die Sie in Ihren täglichen Befehlszeilenaktivitäten verwenden können.

Cut-Befehl und -Syntax

Die grundlegende Syntax für den Schnittbefehl lautet wie folgt:

cut OPTION... [FILE]...

Lassen Sie uns die Schnittoptionen überprüfen und ohne eine Option funktioniert der Schnittbefehl nicht.

Schnittoptionen

-f :Extrahieren durch Angabe eines Feldes. Der Ausschneidebefehl verwendet 'TAB' als Standard-Feldtrennzeichen.

-d :'Tabulator' ist das Standardtrennzeichen und mit dieser Option können Sie spezifische Trennzeichen verwenden.

-b :Zum Extrahieren durch Angabe eines Bytes. Der Byte-Bereich kann ebenfalls angegeben werden.

-c :Um nach Zeichen zu schneiden. Dies kann eine durch Kommas getrennte Liste von Zahlen oder ein durch einen Bindestrich (-) getrennter Zahlenbereich sein.

–complement :Dies ergänzt die Auswahl

–output-delimiter :Um das Ausgabetrennzeichen zu ändern, verwenden Sie die Option -output-delimiter='delimiter'.

--only-delimited :Ausschneiden druckt keine Zeilen ohne Trennzeichen

Wir werden die folgende Textdatei mit dem Namen „content.txt“ und die Datei /etc/passwd in diesem Tutorial verwenden, um unsere Beispiele zu veranschaulichen.

$ cat content.txt 
Ubuntu Linux
Microsoft Windows
OsX El Capitan
Unix
FreeBSD

Wie man durch Trennzeichen schneidet

Die am häufigsten verwendete Schnittoption ist eine Kombination aus -d und -f . Inhalt wird im Wesentlichen basierend auf bestimmten Trennzeichen und aufgelisteten Feldern extrahiert.

Im Folgenden wird beispielsweise nur das erste Feld jeder Zeile aus der Datei „/etc/passwd“ unter Verwendung des Trennzeichens (:) gedruckt.

$ cut -d':' -f1 /etc/passwd
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator
games
...

Das folgende Beispiel, in dem wir Leerzeichen (" ") als Trennzeichen verwenden und das erste Feld aus der Datei mit dem Namen "content.txt" ausschneiden.

$ cut -d " " -f 1 content.txt 
Ubuntu
Microsoft
OsX
Unix
FreeBSD

Dieses Beispiel extrahiert mehr als ein Feld aus einer bestimmten Datei. Hier extrahieren wir das 1. und 6. Feld mit dem Trennzeichen Doppelpunkt (:) aus der Datei „/etc/passwd“, die die Zeichenfolge „/bin/bash“ enthält:

$ 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 (-) wie unten gezeigt an:

$ 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

Um die Auswahlfeldliste zu ergänzen, verwenden Sie --complement Möglichkeit. Diese Option wurde verwendet, um alle Felder außer den angegebenen Feldern auszuwählen.

Im folgenden Beispiel druckt der Befehl alle Felder außer dem 2. Feld in der Datei from '/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 --output-delimiter Möglichkeit. Eingabebegrenzer wird durch -d angegeben Option und standardmäßig ist das Ausgabetrennzeichen dasselbe wie das Eingabetrennzeichen.

Lassen Sie uns zunächst die Ausgabe ohne Ausgabebegrenzer wie folgt überprüfen:

$  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 --output-delimiter hinzugefügt Option und Eingabetrennzeichen Doppelpunkt (:) wird wie folgt durch das 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

Schauen wir uns ein weiteres Beispiel an, hier verwenden wir Ausgabetrennzeichen, um jedes Feld in einer neuen Zeile zu drucken.

Hier verwenden wir --output-delimiter als $’\n’ was eine neue Zeile anzeigt.

Überprüfen Sie die Ausgabe:

$ grep root /etc/passwd | cut -d':' -f1,6,7 --output-delimiter=

Wie man nach Zeichen schneidet

Das -c Die Option (Spalte) wird zum Schneiden nach Zeichenposition verwendet. Denken Sie daran, dass 'TABS' und 'Leerzeichen' auch als Zeichen behandelt werden.

Um das erste Zeichen jeder Zeile aus der Datei namens content.txt zu drucken, verwenden Sie unten:

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

Im folgenden Beispiel zeigen wir die Zeichen 1 bis 7 (Bereich) jeder Zeile aus der Datei an:

$ cut -c 1-7 content.txt
Ubuntu
Microso
OsX El
Unix
FreeBSD

Sehen wir uns an, wie man Spalten nach einer bestimmten Start- oder Endposition auswählt.

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. bis zum 4. Zeichen:

cut -c-4 content.txt
Ubun
Micr
OsX
Unix
Free

Wie man byteweise schneidet

Verwenden Sie das -b Option zum Auswählen eines Teils einer Zeile durch Angabe einer Byte-Position durch durch Komma (,) getrennte Zahlen. Mit Bindestrich können Sie einen Bereich von Bytes angeben.

Das folgende Beispiel schneidet das 1., 2. und 3. Byte aus der Datei mit dem Namen „content.txt“ aus:

$ cut -b 1,2,3 content.txt 
Ubu
Mic
OsX
Uni
Fre

Wir können auch mit Bereichen auflisten, indem wir den folgenden Befehl verwenden:

$ 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.

Sie möchten beispielsweise „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 ein weiteres Beispiel, um den Wert „Gesamt“, „Verwendet“ und „Frei“ 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

Schlussfolgerung

Der Cut-Befehl kann mit vielen anderen Linux- oder Unix-Befehlen geleitet werden. Es kann mit einem oder mehreren Filtern für zusätzliche Textverarbeitung geleitet werden.

Eine der Einschränkungen des cut-Befehls besteht darin, dass er die Angabe von mehr als einem Zeichen als Trennzeichen nicht unterstützt. Mehrere Leerzeichen werden als Trennzeichen für mehrere Felder 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 man nach Zeichen schneidet

Das -c Die Option (Spalte) wird zum Schneiden nach Zeichenposition verwendet. Denken Sie daran, dass 'TABS' und 'Leerzeichen' auch als Zeichen behandelt werden.

Um das erste Zeichen jeder Zeile aus der Datei namens content.txt zu drucken, verwenden Sie unten:

 

Im folgenden Beispiel zeigen wir die Zeichen 1 bis 7 (Bereich) jeder Zeile aus der Datei an:

 

Sehen wir uns an, wie man Spalten nach einer bestimmten Start- oder Endposition auswählt.

So extrahieren Sie Spalten vom 2. Zeichen bis zum letzten Zeichen:

 

So extrahieren Sie Spalten vom 1. bis zum 4. Zeichen:

 

Wie man byteweise schneidet

Verwenden Sie das -b Option zum Auswählen eines Teils einer Zeile durch Angabe einer Byte-Position durch durch Komma (,) getrennte Zahlen. Mit Bindestrich können Sie einen Bereich von Bytes angeben.

Das folgende Beispiel schneidet das 1., 2. und 3. Byte aus der Datei mit dem Namen „content.txt“ aus:

 

Wir können auch mit Bereichen auflisten, indem wir den folgenden Befehl verwenden:

 

Einige praktische Schnittbeispiele

Cut wird am praktischsten mit einer Kombination verschiedener Linux- oder Unix-Befehle verwendet.

Sie möchten beispielsweise „USER“, „PID“ und „COMMAND“ mit dem ps-Befehl extrahieren:

 

Nehmen wir ein weiteres Beispiel, um den Wert „Gesamt“, „Verwendet“ und „Frei“ des Speichers zu extrahieren und mit mehreren Befehlen in einer Textdatei zu speichern:

 

Schlussfolgerung

Der Cut-Befehl kann mit vielen anderen Linux- oder Unix-Befehlen geleitet werden. Es kann mit einem oder mehreren Filtern für zusätzliche Textverarbeitung geleitet werden.

Eine der Einschränkungen des cut-Befehls besteht darin, dass er die Angabe von mehr als einem Zeichen als Trennzeichen nicht unterstützt. Mehrere Leerzeichen werden als Trennzeichen für mehrere Felder gezählt und müssen vor dem Ausschneiden den Befehl tr verwenden, um die gewünschte Ausgabe zu erhalten.


Linux
  1. Verwendung des Linux-Hexdump-Befehls mit praktischen Beispielen

  2. JQ-Befehl in Linux mit Beispielen

  3. Linux – Zusammenführen von /usr/bin und /usr/sbin in /bin (gnu/linux)?

  4. Linux-rsync-Befehl mit praktischen Beispielen

  5. Installieren Sie Binärdateien in /bin, /sbin, /usr/bin und /usr/sbin, Interaktionen mit --prefix und DESTDIR

15 Linux-PS-Befehl mit Beispielen

Linux-Suchbefehl mit praktischen Beispielen

12 praktische Beispiele für In Command unter Linux

Wait-Befehl in Linux mit praktischen Beispielen erklärt

Uniq-Befehl in Linux mit Beispielen erklärt

Linux-lsof-Befehl erklärt mit 12 praktischen Beispielen