Der Linux-Befehl cut wird für die Textverarbeitung verwendet. Sie können diesen Befehl verwenden, um Textteile aus einer Datei zu extrahieren, indem Sie Spalten auswählen.
Dieses Tutorial enthält einige praktische Beispiele für cut-Befehle, die Sie bei Ihren täglichen Befehlszeilenaktivitäten verwenden können.
Für die meisten Beispiele verwenden wir die folgende Testdatei.
$ cat test.txt cat command for file oriented operations. cp command for copy files or directories. ls command to list out files and directories with its attributes.
1. Zeichenspalte auswählen
Um nur eine gewünschte Spalte aus einer Datei zu extrahieren, verwenden Sie die Option -c. Das folgende Beispiel zeigt das zweite Zeichen aus jeder Zeile einer Datei test.txt
$ cut -c2 test.txt a p s
Wie oben zu sehen, sind die Zeichen a, p, s das zweite Zeichen jeder Zeile der Datei test.txt.
2. Wählen Sie die Zeichenspalte mithilfe des Bereichs aus
Eine Reihe von Zeichen kann auch aus einer Datei extrahiert werden, indem die Start- und Endposition mit - getrennt angegeben wird. Das folgende Beispiel extrahiert die ersten 3 Zeichen jeder Zeile aus einer Datei namens test.txt
$ cut -c1-3 test.txt cat cp ls
3. Wählen Sie die Zeichenspalte mit Start- oder Endposition aus
Mit der Option -c kann entweder die Startposition oder die Endposition an den Schnittbefehl übergeben werden.
Im Folgenden wird nur die Startposition vor dem ‚-‘ angegeben. Dieses Beispiel extrahiert vom 3. Zeichen bis zum Ende jeder Zeile aus der Datei test.txt.
$ cut -c3- test.txt t command for file oriented operations. command for copy files or directories. command to list out files and directories with its attributes.
Im Folgenden wird nur die Endposition nach dem ‚-‘ angegeben. Dieses Beispiel extrahiert 8 Zeichen vom Anfang jeder Zeile aus der Datei test.txt.
$ cut -c-8 test.txt cat comm cp comma ls comma
Die gesamte Zeile würde gedruckt, wenn Sie keine Zahl vor oder nach dem ‚-‘ angeben, wie unten gezeigt.
$ cut -c- test.txt cat command for file oriented operations. cp command for copy files or directories. ls command to list out files and directories with its attributes.
4. Wählen Sie ein bestimmtes Feld aus einer Datei aus
Anstatt x Zeichen auszuwählen, können Sie, wenn Sie ein ganzes Feld extrahieren möchten, die Optionen -f und -d kombinieren. Die Option -f gibt an, welches Feld Sie extrahieren möchten, und die Option -d gibt an, welches Feldtrennzeichen in der Eingabedatei verwendet wird.
Das folgende Beispiel zeigt nur das erste Feld jeder Zeile aus der Datei /etc/passwd mit dem Feldbegrenzer :(Doppelpunkt). In diesem Fall ist das erste Feld der Benutzername. Die Datei
$ cut -d':' -f1 /etc/passwd root daemon bin sys sync games bala
5. Mehrere Felder aus einer Datei auswählen
Sie können auch mehr als ein Feld aus einer Datei oder Standardausgabe extrahieren. Das folgende Beispiel zeigt den Benutzernamen und das Home-Verzeichnis von Benutzern, die die Login-Shell als „/bin/bash“ haben.
$ grep "/bin/bash" /etc/passwd | cut -d':' -f1,6 root:/root bala:/home/bala
Um den Feldbereich anzuzeigen, geben Sie das Startfeld und das Endfeld wie unten gezeigt an. In diesem Beispiel wählen wir die Felder 1 bis 4, 6 und 7
aus$ grep "/bin/bash" /etc/passwd | cut -d':' -f1-4,6,7 root:x:0:0:/root:/bin/bash bala:x:1000:1000:/home/bala:/bin/bash
6. Felder nur auswählen, wenn eine Zeile das Trennzeichen enthält
Wenn Sie in unserem /etc/passwd-Beispiel ein anderes Trennzeichen als :(Doppelpunkt) übergeben, zeigt cut einfach die ganze Zeile an.
Im folgenden Beispiel haben wir das Trennzeichen als | angegeben (pipe), und der cut-Befehl zeigt einfach die ganze Zeile an, auch wenn er keine Zeile mit | findet (Pipe) als Trennzeichen.
$ grep "/bin/bash" /etc/passwd | cut -d'|' -f1 root:x:0:0:root:/root:/bin/bash bala:x:1000:1000:bala,,,:/home/bala:/bin/bash
Es ist jedoch möglich, mit der Option -s nur die Zeilen zu filtern und anzuzeigen, die das angegebene Trennzeichen enthalten.
Das folgende Beispiel zeigt keine Ausgabe an, da der cut-Befehl keine Zeilen mit | gefunden hat (Pipe) als Trennzeichen in der Datei /etc/passwd.
$ grep "/bin/bash" /etc/passwd | cut -d'|' -s -f1
7. Alle Felder außer den angegebenen Feldern auswählen
Um die Auswahlfeldliste zu ergänzen, verwenden Sie die Option –complement.
Das folgende Beispiel zeigt alle Felder aus der Datei /etc/passwd außer Feld 7
$ grep "/bin/bash" /etc/passwd | cut -d':' --complement -s -f7 root:x:0:0:root:/root bala:x:1000:1000:bala,,,:/home/bala
8. Ausgabetrennzeichen für Anzeige ändern
Standardmäßig ist das Ausgabetrennzeichen dasselbe wie das Eingabetrennzeichen, das wir in der Option cut -d angeben.
Um das Ausgabetrennzeichen zu ändern, verwenden Sie die Option –output-delimiter wie unten gezeigt. In diesem Beispiel ist das Eingabetrennzeichen :(Doppelpunkt), aber das Ausgabetrennzeichen ist # (Hash).
$ grep "/bin/bash" /etc/passwd | cut -d':' -s -f1,6,7 --output-delimiter='#' root#/root#/bin/bash bala#/home/bala#/bin/bash
9. Ändern Sie das Ausgabetrennzeichen in Newline
In diesem Beispiel wird jedes einzelne Feld der Ausgabe des Schnittbefehls in einer separaten Zeile angezeigt. Wir haben immer noch –output-delimiter verwendet, aber der Wert ist $’\n’, was darauf hinweist, dass wir einen Zeilenumbruch als Ausgabetrennzeichen hinzufügen sollten.
$ grep bala /etc/passwd | cut -d':' -f1,6,7 --output-delimiter=$'\n' bala /home/bala /bin/bash
10. Cut mit anderer Unix-Befehlsausgabe kombinieren
Die Leistungsfähigkeit des cut-Befehls kann realisiert werden, wenn Sie ihn mit der Standardausgabe eines anderen Unix-Befehls kombinieren.
Sobald Sie die oben erläuterte grundlegende Verwendung des Ausschneidebefehls beherrschen, können Sie den Ausschneidebefehl klugerweise verwenden, um viele Ihrer Anforderungen zur Textbearbeitung zu lösen.
Das folgende Beispiel zeigt, wie Sie nur nützliche Informationen aus der Ausgabe des Befehls ps extrahieren können. Wir haben auch gezeigt, wie wir die Ausgabe des Befehls ps mit grep und sed gefiltert haben, bevor die endgültige Ausgabe an den Befehl cut übergeben wurde. Hier haben wir die Schnittoptionen -d und -f verwendet, die wir in den obigen Beispielen erklärt haben.
$ ps axu | grep python | sed 's/\s\+/ /g' | cut -d' ' -f2,11- 2231 /usr/bin/python /usr/lib/unity-lens-video/unity-lens-video 2311 /usr/bin/python /usr/lib/unity-scope-video-remote/unity-scope-video-remote 2414 /usr/bin/python /usr/lib/ubuntuone-client/ubuntuone-syncdaemon 2463 /usr/bin/python /usr/lib/system-service/system-service-d 3274 grep --color=auto python