Linux cut-Befehl Verwendungshandbuch

Der cut-Befehl in Linux ist ein leistungsstarkes Textverarbeitungswerkzeug, das verwendet wird, um spezifische Abschnitte aus jeder Zeile einer Datei oder aus piped input zu extrahieren. Er verändert die Originaldatei nicht, sondern liest einfach den Inhalt und zeigt die gewünschten Teile im Standardausgang an. In diesem Artikel werden wir den Zweck des cut-Befehls in Linux erkunden und demonstrieren, wie man ihn durch praktische, reale Beispiele verwendet.
Verständnis des cut-Befehls
Der cut-Befehl ist ein wertvolles Werkzeug für jeden, der mit strukturiertem Text arbeitet, und ermöglicht eine effiziente Datenmanipulation und -extraktion in Unix-ähnlichen Systemen. Er extrahiert Teile einer Zeile basierend auf Byte-Positionen, Zeichen-Positionen, Trennzeichen oder Feldern. Dies macht ihn besonders nützlich zum Filtern und Organisieren von Daten in Shell-Skripten und Befehlszeilenoperationen. Er ist auch nützlich für Aufgaben wie das Abrufen von Spalten aus CSV-Dateien, das Kürzen von Zeichen oder das Analysieren von Protokolldateien. Obwohl er häufig mit Dateien verwendet wird, kann der cut-Befehl auch die Ausgabe anderer Befehle verarbeiten, wenn er in einer Pipeline verwendet wird.
Grundsyntax des cut-Befehls
Der cut-Befehl hat eine sehr einfache Syntax, die Optionen und einen Dateinamen verwendet. So funktioniert er:
cut[OPTIONEN][DATEI]Hier lässt Sie OPTIONS steuern, wie der cut-Befehl funktioniert. Sie können einen Feldtrenner (wie ein Komma) wählen, bestimmte Felder auswählen, Feldbereiche festlegen, Zeilen ohne den Trenner ignorieren usw. DATEI ist die Zieldatei, aus der Sie Daten extrahieren möchten. Der cut-Befehl liest von der Standardausgabe, wenn Sie keine Datei angeben. Darüber hinaus können Sie mehrere Dateien angeben; in diesem Fall behandelt der cut-Befehl sie als eine, indem er deren Inhalte kombiniert, bevor er verarbeitet.
Häufig verwendete Optionen
Der cut-Befehl ermöglicht es Ihnen, spezifische Teile von Text aus einer Datei oder Eingabe zu extrahieren. Sie können ihm sagen, was zu extrahieren ist, indem Sie verschiedene Optionen verwenden, wie Bytes, Zeichen oder Felder, und indem Sie einen bestimmten Separator (Trennzeichen) festlegen. Hier sind die üblichen Optionen:
- -f oder –fields=LISTE: Wählt bestimmte Felder basierend auf einem gewählten Trennzeichen aus.
- -b oder –bytes=LISTE: Extrahiert bestimmte Bytes aus jeder Zeile.
- -c oder –characters=LISTE: Zieht spezifische Zeichen aus jeder Zeile.
- -d oder –delimiter: Legt ein benutzerdefiniertes Trennzeichen anstelle des standardmäßigen Tabulators fest.
- –complement: Zeigt alles außer den ausgewählten Feldern, Bytes oder Zeichen an.
- -s oder –only-delimited: Überspringt Zeilen, die nicht den Trenner enthalten. Standardmäßig werden solche Zeilen eingeschlossen.
- –output-delimiter: Mit dieser Option können Sie ein anderes Trennzeichen für die Ausgabe auswählen. Standardmäßig verwendet cut dasselbe Trennzeichen wie die Eingabe.
Die Optionen -f, -b und -c verwenden eine LISTE, um festzulegen, was zu extrahieren ist, wie Felder, Bytes oder Zeichen. Sie können Folgendes angeben:
- Eine einzelne Zahl wie 2
- Mehrere Zahlen, die durch Kommas getrennt sind, wie 1,3,5
- Einen Bereich wie 2-4 (was bedeutet, von 2 bis 4 extrahieren)
N-, um von Position N bis zum Ende zu bedeuten-M, um von Beginn bis zur Position M zu bedeuten
Wie der cut-Befehl in Linux funktioniert
Lassen Sie uns einige praktische Beispiele durchgehen, um zu verstehen, wie der cut-Befehl in Linux funktioniert. Erstellen Sie zunächst eine Datei mit dem Namen „mte.csv“ mit Hilfe des echo-Befehls:
echo -e "empID,empName,empDesig\n101,Anees,Autor\n102,Asghar,Manager\n103,Damian,CEO" > mte.csvÜberprüfen wir den Inhalt der Datei mit dem cat-Befehl:
cat mte.csv
Hier ist es wichtig zu beachten, dass der cut-Befehl die Datei nicht verändert, sondern lediglich die ausgewählte Ausgabe basierend auf dem was Sie anfordern anzeigt.
Daten nach Zeichen extrahieren
Verwenden Sie die Option -c zusammen mit dem cut-Befehl, um Zeichen nach Position zu extrahieren:
cut -c1,8 mte.csvDieser Befehl extrahiert das erste und das achte Zeichen aus jeder Zeile:
Um Zeichen zwischen bestimmten Positionen oder Bereichen zu extrahieren, können wir den cut-Befehl wie folgt verwenden:
cut -c1-8 mte.csvDieser Befehl extrahiert die Zeichen von eins bis acht aus jeder Zeile:
Nach Bytes extrahieren
Wir können die Option -b mit dem cut-Befehl verwenden, um spezifische Bytes aus jeder Zeile zu extrahieren:
cut -b1-3 mte.csvDieser Befehl extrahiert die ersten drei Bytes aus jeder Zeile der Datei mit dem Namen mte.csv:
Nach Feld (Spalte) extrahieren
Sie können ein ganzes Feld einer Datei mit dem cut-Befehl extrahieren. Dazu verwenden Sie die Option -f mit -d, wie folgt:
cut -d',' -f2 mte.csvIn diesem Befehl setzt -d',' den Trenner auf ein Komma, und -f2 sagt cut, dass das zweite Feld aus jeder Zeile in der mte.csv-Datei extrahiert werden soll:
Verwendung benutzerdefinierter Trennzeichen im cut
Der cut-Befehl verwendet standardmäßig ein Tabulator als Trennzeichen. Wenn Ihre Felder jedoch durch etwas anderes als einen Tabulator getrennt sind, verwenden Sie -d, um das richtige festzulegen. Zum Beispiel können wir das fünfte Wort aus einem durch Leerzeichen getrennten Satz mit dem -d-Trennzeichen wie folgt abrufen:
echo "Hey! Geeks Welcome to Maketecheasier.com" | cut -d' ' -f5Überspringen bestimmter Felder während der Extraktion
Sie können spezifische Felder beim Extrahieren von Text aus einer Datei ausschließen, indem Sie die Option --complement mit dem cut-Befehl verwenden. Diese Option weist den cut-Befehl an, alle Felder außer den angegebenen auszugeben:
cut -d',' -f1 mte.csv --complementDieser Befehl überspringt die erste Spalte und gibt den Rest des Inhalts zurück:
Ändern des Standardtrennzeichens in der Ausgabe
Standardmäßig bewahrt der cut-Befehl den Eingabedrenner in der Ausgabe, wenn er Felder extrahiert. Sie können jedoch das Ausgabetrennzeichen mit der Option --output-delimiter ändern, wenn Sie mit der feldbasierten Extraktion arbeiten:
cut -d',' -f1-3 --output-delimiter='-' mte.csvDieser Befehl verwendet den Bindestrich - als Trenner in der Ausgabe:
Verwendung von cut mit anderen nützlichen Linux-Befehlen
Sie können cut auch mit anderen Linux-Befehlen unter Verwendung des Pipeline-Symbols verwenden. Zum Beispiel extrahiert der folgende Befehl die ersten 5 Zeichen aus jeder Zeile der Ausgabe des who-Befehls:
who | cut -c1-5Im folgenden Beispiel verwenden wir den cut-Befehl zusammen mit head, um die ersten zwei Zeilen der „mte.csv“-Datei anzuzeigen und nur die Felder empName und empDesig zu extrahieren:
head -n2 mte.csv | cut -d',' -f2,3Umgang mit unregelmäßigen Datenformaten mit dem Linux cut-Befehl
Der cut-Befehl funktioniert am besten, wenn die Daten ordentlich organisiert sind, wobei dasselbe Trennzeichen (wie ein Komma oder Tabulator) jedes Teil trennt. Wenn die Datei jedoch ungleichmäßige Abstände oder gemischte Trennzeichen aufweist, funktioniert cut möglicherweise nicht gut allein. In solchen Situationen ist es nützlich, die Daten zuerst mithilfe von Befehlen wie tr oder sed zu bereinigen, um sicherzustellen, dass cut die richtigen Teile extrahieren kann.
Umgang mit zusätzlichen Abständen
Betrachten Sie eine Datei mit dem Namen „mteData.txt“, in der die Felder durch mehrere Abstände getrennt sind, wie unten gezeigt:
cat mteData.txtDa cut einen einzelnen, konsistenten Trenner erwartet, können wir den Abstand mithilfe von tr vereinfachen, bevor wir cut anwenden:
cat mteData.txt | tr -s ' ' | cut -d' ' -f1-2Dieser Befehl liest den Inhalt von „mteData.txt“, verwendet tr, um mehrere Abstände durch einen einzelnen Abstand zu ersetzen, und verwendet dann cut, um die ersten beiden Felder zu extrahieren, die durch ein Leerzeichen getrennt sind:
Umgang mit gemischten Trennzeichen
Wenn eine Datei eine Kombination aus Leerzeichen und Kommas als Trennzeichen verwendet, können wir das Format mithilfe von sed normalisieren. Zum Beispiel enthält eine Datei mit dem Namen „mteData1.txt“ folgendes:
cat mteData1.txtLassen Sie uns den sed-Befehl mit dem cut-Befehl verwenden, um alle Leerzeichen durch ein Komma zu ersetzen und dann die ersten und dritten durch Kommas getrennten Felder zu extrahieren:
sed 's/ /,/g' mteData1.txt | cut -d',' -f1,3Zusammenfassung
In diesem Artikel haben wir den Linux cut-Befehl erkundet, ein nützliches Kommando in Linux zum Extrahieren von Daten aus Dateien oder piped input. Mit seiner einfachen Syntax können Sie leicht Zeichen, Bytes oder Felder basierend auf einem Trennzeichen abrufen. Wir haben auch demonstriert, wie man den cut-Befehl mit anderen Befehlen wie tr, sed und head verwendet, um unordentliche Daten zu verwalten und die Ausgabe zu vereinfachen. Ob Sie mit CSV-Dateien arbeiten, Protokolle analysieren oder Daten bereinigen, der cut-Befehl ist ein unverzichtbares Werkzeug für die Textverarbeitung auf Unix-ähnlichen Systemen.