
In Linux- und Unix-Systemen sind viele Dienstprogramme verfügbar, mit denen Sie Textdateien verarbeiten und filtern können. cut
ist ein Befehlszeilendienstprogramm, mit dem Sie Teile von Zeilen aus bestimmten Dateien oder per Pipe geleiteten Daten ausschneiden und das Ergebnis auf der Standardausgabe ausgeben können. Es kann verwendet werden, um Teile einer Zeile nach Trennzeichen, Byteposition und Zeichen abzuschneiden.
In diesem Artikel zeigen wir Ihnen, wie Sie den cut
verwenden Befehl durch praktische Beispiele und detaillierte Erläuterungen der gängigsten Optionen.
Wie man den cut
verwendet Befehl #
Die Syntax für den cut
Befehl lautet wie folgt:
cut OPTION... [FILE]...
Die Optionen, die cut
mitteilen Ob ein Trennzeichen, eine Byte-Position oder ein Zeichen beim Ausschneiden ausgewählter Teile verwendet werden soll, die Zeilen lauten wie folgt:
-f
(--fields=LIST
) – Wählen Sie aus, indem Sie ein Feld, eine Gruppe von Feldern oder einen Bereich von Feldern angeben. Dies ist die am häufigsten verwendete Option.-b
(--bytes=LIST
) – Wählen Sie aus, indem Sie ein Byte, eine Gruppe von Bytes oder einen Bereich von Bytes angeben.-c
(--characters=LIST
) – Wählen Sie aus, indem Sie ein Zeichen, eine Gruppe von Zeichen oder einen Bereich von Zeichen angeben.
Sie können nur eine der oben aufgeführten Optionen verwenden.
Andere Optionen sind:
-d
(--delimiter
) - Geben Sie ein Trennzeichen an, das anstelle des standardmäßigen „TAB“-Trennzeichens verwendet wird.--complement
- Ergänzen Sie die Auswahl. Bei Verwendung dieser Optioncut
zeigt alle Bytes, Zeichen oder Felder außer den ausgewählten an.-s
(--only-delimited
) - Standardmäßigcut
druckt die Zeilen, die kein Trennzeichen enthalten. Wenn diese Option verwendet wird,cut
druckt keine Zeilen ohne Trennzeichen.--output-delimiter
- Das Standardverhalten voncut
besteht darin, den Eingabebegrenzer als Ausgabebegrenzer zu verwenden. Mit dieser Option können Sie eine andere Ausgabetrennzeichenfolge angeben.
Der cut
Der Befehl kann null oder mehr DATEInamen akzeptieren. Wenn kein FILE
angegeben ist, oder wenn FILE
ist -
, cut
liest von der Standardeingabe.
Die LIST
Argument, das an -f
übergeben wird , -b
und -c
Optionen können eine ganze Zahl, mehrere durch Kommas getrennte ganze Zahlen, ein Bereich von ganzen Zahlen oder mehrere durch Kommas getrennte ganzzahlige Bereiche sein. Jeder Bereich kann einer der folgenden sein:
N
das N-te Feld, Byte oder Zeichen, beginnend bei 1.N-
vom N-ten Feld, Byte oder Zeichen, bis zum Ende der Zeile.N-M
vom N-ten zum M-ten Feld, Byte oder Zeichen.-M
vom ersten bis zum M-ten Feld, Byte oder Zeichen.
So schneiden Sie nach Feld #
Um die auszuschneidenden Felder anzugeben, rufen Sie den Befehl mit -f
auf Möglichkeit. Wenn nicht angegeben, ist das Standardtrennzeichen „TAB“.
In den folgenden Beispielen verwenden wir die folgende Datei. Die Felder sind durch Tabulatoren getrennt.
test.txt245:789 4567 M:4540 Admin 01:10:1980
535:763 4987 M:3476 Sales 11:04:1978
Um beispielsweise das 1. und 3. Feld anzuzeigen, würden Sie Folgendes verwenden:
cut test.txt -f 1,3
245:789 M:4540
535:763 M:3476
Oder wenn Sie vom 1. bis zum 4. Feld anzeigen möchten:
cut test.txt -f -4
245:789 4567 M:4540 Admin
535:763 4987 M:3476 Sales
So schneiden Sie basierend auf einem Trennzeichen #
Um anhand eines Trennzeichens auszuschneiden, rufen Sie den Befehl mit -d
auf Option, gefolgt von dem Trennzeichen, das Sie verwenden möchten.
Um beispielsweise das 1. und 3. Feld mit „:“ als Trennzeichen anzuzeigen, würden Sie Folgendes eingeben:
cut test.txt -d ':' -f 1,3
245:4540 Admin 01
535:3476 Sales 11
Sie können jedes einzelne Zeichen als Trennzeichen verwenden. Im folgenden Beispiel verwenden wir das Leerzeichen als Trennzeichen und drucken das 2. Feld:
echo "Lorem ipsum dolor sit amet" | cut -d ' ' -f 2
ipsum
So ergänzen Sie die Auswahl #
Um die Auswahlfeldliste zu ergänzen, verwenden Sie --complement
Möglichkeit. Dadurch werden nur die Felder gedruckt, die nicht mit -f
ausgewählt wurden Option.
Der folgende Befehl druckt alle Felder außer dem 1. und 3.:
cut test.txt -f 1,3 --complement
4567 Admin 01:10:1980
4987 Sales 11:04:1978
So geben Sie ein Ausgabetrennzeichen an #
Um das Ausgabetrennzeichen anzugeben, verwenden Sie --output-delimiter
Möglichkeit. Zum Beispiel, um das Ausgabetrennzeichen auf _
zu setzen Sie würden verwenden:
cut test.txt -f 1,3 --output-delimiter='_'
245:789_M:4540
535:763_M:3476
Wie man nach Bytes und Zeichen schneidet #
Bevor wir fortfahren, wollen wir zwischen Bytes und Zeichen unterscheiden.
Ein Byte besteht aus 8 Bit und kann 256 verschiedene Werte darstellen. Als der ASCII-Standard eingeführt wurde, berücksichtigte er alle Buchstaben, Zahlen und Symbole, die für die Arbeit mit Englisch erforderlich sind. Die ASCII-Zeichentabelle hat 128 Zeichen, und jedes Zeichen wird durch ein Byte dargestellt. Als Computer weltweit zugänglich wurden, begannen Technologieunternehmen, neue Zeichencodierungen für verschiedene Sprachen einzuführen. Bei Sprachen mit mehr als 256 Zeichen war eine einfache 1-zu-1-Zuordnung nicht möglich. Dies führt zu verschiedenen Problemen wie dem Teilen von Dokumenten oder dem Durchsuchen von Websites, und es wurde ein neuer Unicode-Standard benötigt, der mit den meisten Schriftsystemen der Welt umgehen kann. UTF-8 wurde entwickelt, um diese Probleme zu lösen. In UTF-8 werden nicht alle Zeichen mit 1 Byte dargestellt. Zeichen können mit 1 Byte bis 4 Byte dargestellt werden.
Das -b
(--bytes
)-Option weist den Befehl an, Abschnitte aus jeder Zeile zu schneiden, die durch bestimmte Byte-Positionen angegeben ist.
In den folgenden Beispielen verwenden wir den ü
Zeichen, das 2 Bytes benötigt.
Wählen Sie das 5. Byte:
echo 'drüberspringen' | cut -b 5
b
Wählen Sie das 5., 9. und 13. Byte aus:
echo 'drüberspringen' | cut -b 5,9,13
bpg
Wählen Sie den Bereich vom 1. bis 5. Byte:
echo 'drüberspringen' | cut -b 1-5
drüb
Zum Zeitpunkt der Erstellung dieses Artikels war die Version von cut
gebündelt in GNU Coreutils hat keine Option zum Schneiden nach Zeichen. Bei Verwendung des -c
Option cut
verhält sich genauso wie bei Verwendung von -b
Option.
Schnittbeispiele #
Der cut
Der Befehl wird normalerweise in Kombination mit anderen Befehlen durch Rohrleitungen verwendet. Hier sind einige Beispiele:
Erhalten Sie eine Liste aller Benutzer #
Die Ausgabe von getent passwd
Befehl wird an cut
übergeben , die das 1. Feld mit :
druckt als Trennzeichen.
getent passwd | cut -d ':' -f1
Die Ausgabe zeigt eine Liste aller Systembenutzer.
Die 10 am häufigsten verwendeten Befehle anzeigen #
Im folgenden Beispiel cut
wird verwendet, um die ersten 8 Bytes aus jeder Zeile des history
zu entfernen Befehlsausgabe.
history | cut -c8- | sort | uniq -c | sort -rn | head
Schlussfolgerung #
cut
Der Befehl wird verwendet, um ausgewählte Felder aus jeder Zeile bestimmter Dateien oder der Standardeingabe anzuzeigen.
Obwohl sehr nützlich, cut
hat einige Einschränkungen. Es unterstützt nicht die Angabe von mehr als einem Zeichen als Trennzeichen und es unterstützt nicht mehrere Trennzeichen.
Wenn Sie Fragen oder Feedback haben, können Sie gerne einen Kommentar hinterlassen.