Linux-Schnittbefehl

Aktualisiert: 05/04/2019 von Computer Hope

Unter Unix Ähnlich wie bei Betriebssystemen entfernt der Befehl cut Abschnitte jeder Zeile einer Datei oder von Dateien („schneidet sie aus“).

Dieses Dokument behandelt die GNU / Linux-Version von cut.

Syntax

cut OPTION... ...

Optionen

-b, –bytes = LIST Wählen Sie nur die Bytes aus jeder Zeile aus, wie in LIST angegeben. LIST gibt ein Byte, eine Menge von Bytes oder einen Bereich von Bytes an. Siehe Angeben von LIST unten.
-c, –characters = LIST Wählen Sie nur die Zeichen aus jeder Zeile aus, wie in LIST angegeben. LIST gibt ein Zeichen, einen Zeichensatz oder einen Zeichenbereich an. Siehe Angeben von LIST unten.
-d, –delimiter = DELIM Verwenden Sie das Zeichen DELIM anstelle einer Registerkarte für das Feldtrennzeichen.
-f, –fields = LIST wählt nur diese Felder in jeder Zeile aus; Drucken Sie auch jede Zeile, die kein Trennzeichen enthält, es sei denn, die Option -s ist angegeben. LIST gibt ein Feld, eine Reihe von Feldern oder einen Bereich von Feldern an. Siehe Angeben der LISTE unten.
-n Diese Option wird ignoriert, ist jedoch aus Kompatibilitätsgründen enthalten.
–komplementieren ergänzen die Menge ausgewählter Bytes, Zeichen oder Felder.
-s, – nur begrenzt druckt keine Zeilen, die keine Trennzeichen enthalten.
–output-delimiter = STRING Verwenden Sie STRING als Ausgabe-Trennzeichen. Standardmäßig wird das Eingabetrennzeichen verwendet.
–help Zeigt eine Hilfemeldung an und beendet das Programm.
–version Versionsinformationen ausgeben und beenden.

Verwendungshinweise

Verwenden Sie beim Aufrufen von cut die Option -b, -c oder -f, jedoch nur eine davon.

Wenn keine DATEI angegeben ist, wird cut von der Standardeingabe gelesen.

Angeben von LIST

Jede LIST besteht aus einer Ganzzahl, einem Bereich von Ganzzahlen oder mehreren durch Kommas getrennten Ganzzahlbereichen. Die ausgewählte Eingabe wird in derselben Reihenfolge geschrieben, in der sie gelesen wurde, und genau einmal für die Ausgabe geschrieben. Ein Bereich besteht aus:

Angenommen, Sie haben eine Datei mit dem Namen data.txt, die den folgenden Text enthält:

onetwothreefourfivealphabetagammadeltaepsilon

In diesem Beispiel wird jedes dieser Wörter durch ein Tabulatorzeichen und nicht durch Leerzeichen getrennt. Das Tabulatorzeichen ist das Standardtrennzeichen für den Schnitt. Daher wird ein Feld standardmäßig als durch ein Tabulator begrenztes Feld betrachtet.

Um nur das dritte Feld jeder Zeile zu „schneiden“, verwenden Sie den folgenden Befehl:

cut -f 3 data.txt

… der Folgendes ausgibt:

threegamma

Wenn Sie stattdessen nur das zweite bis vierte Feld jeder Zeile „ausschneiden“ möchten, verwenden Sie den folgenden Befehl:

cut -f 2-4 data.txt

… das Folgendes ausgibt:

twothreefourbetagammadelta

Wenn Sie nur den First-Through-“ schneiden „möchten Verwenden Sie im zweiten und vierten bis fünften Feld jeder Zeile (ohne das dritte Feld) den folgenden Befehl:

cut -f 1-2,4-5 data.txt

… der Folgendes ausgibt:

onetwofourfivealphabetadeltaepsilon

Oder sagen wir es Ihnen Ich möchte das dritte Feld und jedes Feld danach, wobei die ersten beiden Felder weggelassen werden. In diesem Fall können Sie den folgenden Befehl verwenden:

cut -f 3- data.txt

… der Folgendes ausgibt:

threefourfivegammadeltaepsilon

Die Angabe eines Bereichs mit LIST gilt auch für das Ausschneiden von Zeichen (-c) oder Bytes (-b) aus einer Zeile. Um beispielsweise nur das dritte bis zwölfte Zeichen jeder Zeile von data.txt auszugeben, verwenden Sie den folgenden Befehl:

cut -c 3-12 data.txt

… der ausgegeben wird Folgendes:

etwothrephabetag

Beachten Sie, dass das „Leerzeichen“ zwischen den einzelnen Wörtern tatsächlich ein einzelnes Tabulatorzeichen ist, sodass in beiden Ausgabezeilen zehn Zeichen angezeigt werden: acht alphanumerische Zeichen und zwei Tabulatorzeichen. Mit anderen Worten, beim Ausschneiden werden die ersten beiden Zeichen jeder Zeile weggelassen, wobei die Registerkarten jeweils als ein Zeichen gezählt werden. Ausgabe der Zeichen drei bis zwölf, wobei die Registerkarten jeweils als ein Zeichen gezählt werden; und das Weglassen von Zeichen nach dem zwölften.

Das Zählen von Bytes anstelle von Zeichen führt in diesem Fall zu derselben Ausgabe, da in einer ASCII-codierten Textdatei jedes Zeichen durch ein einzelnes Byte (acht Bits) dargestellt wird ) von Dateien. Der Befehl:

cut -b 3-12 data.txt

… erzeugt für unsere Datei data.txt genau dieselbe Ausgabe:

etwothrephabetag

Angeben eines anderen Trennzeichens als der Registerkarte

Das Tabulatorzeichen ist das Standardtrennzeichen, mit dem cut bestimmt, was ein Feld ausmacht. Wenn die Felder Ihrer Datei bereits durch Tabulatoren getrennt sind, müssen Sie kein anderes Trennzeichen angeben.

Sie können jedoch ein beliebiges Zeichen als Trennzeichen angeben.Beispielsweise enthält die Datei / etc / passwd Informationen zu jedem Benutzer im System, einem Benutzer pro Zeile, und jedes Informationsfeld wird durch einen Doppelpunkt („:“) begrenzt. Beispielsweise könnte die Zeile / etc / passwd für den Root-Benutzer folgendermaßen aussehen:

root:x:0:0:root:/root:/bin/bash

Diese Felder enthalten die folgenden Informationen in der folgenden Reihenfolge: durch einen Doppelpunkt getrennt:

  1. Benutzername
  2. Passwort (wird bei Verschlüsselung als x angezeigt)
  3. Benutzer-ID-Nummer (UID)
  4. Gruppen-ID-Nummer (GID)
  5. Kommentarfeld (vom Fingerbefehl verwendet)
  6. Basisverzeichnis
  7. Shell

Der Benutzername ist das erste Feld in der Zeile. Um jeden Benutzernamen im System anzuzeigen, verwenden Sie den folgenden Befehl:

cut -f 1 -d ":" /etc/passwd

… der ausgegeben wird Beispiel:

rootdaemonbinsyschope

(Auf einem typischen System gibt es viel mehr Benutzerkonten, einschließlich vieler Konten, die für Systemdienste spezifisch sind. In diesem Beispiel werden wir jedoch so tun Es gibt nur fünf Benutzer.)

Das dritte Feld jeder Zeile in der Datei / etc / passwd ist die UID (Benutzer-ID-Nummer). Verwenden Sie den folgenden Befehl, um jeden Benutzernamen und jede Benutzer-ID-Nummer anzuzeigen:

… das beispielsweise Folgendes ausgibt:

root:0daemon:1bin:2sys:3chope:1000

Wie Sie sehen können, erfolgt die Ausgabe Standardmäßig wird das gleiche Trennzeichen verwendet, das für die Eingabe angegeben wurde. In diesem Fall ist dies das Doppelpunktzeichen („:“). Sie können jedoch ein anderes Trennzeichen für die Eingabe und Ausgabe angeben. Wenn Sie also den vorherigen Befehl ausführen möchten, die Ausgabe jedoch durch ein Leerzeichen getrennt ist, Sie können den folgenden Befehl verwenden:

cut -f 1,3 -d ":" --output-delimiter=" " /etc/passwd
root 0daemon 1bin 2sys 3chope 1000

Aber was ist, wenn die Ausgabe durch eine Registerkarte begrenzt werden soll? Die Angabe eines Tabulatorzeichens in der Befehlszeile ist etwas komplizierter, da es sich um ein nicht druckbares Zeichen handelt. Um es in der Befehlszeile anzugeben, müssen Sie es vor der Shell „schützen“. Dies erfolgt je nach Shell unterschiedlich. “ Bei Verwendung, aber in der Linux-Standard-Shell (Bash) können Sie das Tabulatorzeichen mit $ „\ t“ angeben. Der Befehl:

cut -f 1,3 -d ":" --output-delimiter=$"\t" /etc/passwd

… gibt beispielsweise Folgendes aus:

root0daemon1bin2sys3chope1000

Beispiele

cut -c 3 file.txt

Geben Sie das dritte Zeichen jeder Zeile der Datei file.txt aus und lassen Sie die anderen weg.

cut -c 1-3 file.txt

Gibt die ersten drei Zeichen jeder Zeile der Datei file.txt aus, wobei der Rest weggelassen wird.

cut -c -3 file.txt

Wie den obigen Befehl. Geben Sie die ersten drei Zeichen jeder Zeile der Datei file.txt aus.

cut -c 3- file.txt

Geben Sie das dritte bis letzte Zeichen jeder Zeile der Datei file.txt aus die ersten beiden Zeichen.

cut -d ":" -f 1 /etc/passwd

Gibt das erste Feld der Datei / etc / passwd aus, wobei die Felder durch einen Doppelpunkt („:“) getrennt sind. Das erste Feld von / etc / passwd ist der Benutzername, daher gibt dieser Befehl jeden Benutzernamen in der passwd-Datei aus.

grep "/bin/bash" /etc/passwd | cut -d ":" -f 1,6

Geben Sie das erste und das sechste Feld aus. durch einen Doppelpunkt eines Eintrags in der Datei / etc / passwd getrennt, der / bin / bash als Anmeldeshell angibt. Dieser Befehl gibt den Benutzernamen und das Ausgangsverzeichnis eines Benutzers aus, dessen Anmeldeshell / bin / bash lautet.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.