Der Befehl cut wählt bestimmte Zeichenpositionen oder Felder aus jeder Eingabezeile aus. Er eignet sich am besten für einheitlich strukturierte Texte, deren Trennzeichen und Feldpositionen bekannt sind.
Text-Fu · Lektion 6
cut
Lerne, mit cut Zeichenpositionen oder getrennte Felder aus jeder Zeile auszuwählen.
Erstelle für die Beispiele eine kleine tabulatorgetrennte Datei. printf interpretiert \t als Tabulator und \n als Zeilenumbruch:
$ printf 'name\trole\nalice\tadmin\nbob\tviewer\n' > team.tsv
Zeichenpositionen auswählen
Mit -c LIST wählst du Positionen aus jeder Zeile aus. Die Zählung beginnt bei 1:
$ cut -c 1 team.tsv
n
a
b
Die Liste kann einzelne Positionen und Bereiche enthalten:
$ cut -c 1-4 team.tsv
name
alic
bob
$ cut -c 1,3 team.tsv
nm
ai
bb
Leerzeichen, Tabulatoren und Satzzeichen belegen ebenfalls Positionen. cut verarbeitet jede Zeile unabhängig.
Welcher Befehl gibt das erste Zeichen jeder Zeile von names.txt aus?
Tabulatorgetrennte Felder auswählen
Mit -f LIST wählst du Felder aus. Das standardmäßige Trennzeichen ist ein Tabulator:
$ cut -f 2 team.tsv
role
admin
viewer
Wie bei der Zeichenauswahl kann eine Liste Werte wie 1, 1,3, 2-4, -3 oder 2- enthalten.
Welcher Befehl gibt das zweite tabulatorgetrennte Feld jeder Zeile von team.tsv aus?
Ein eigenes Trennzeichen wählen
Verwende -d CHARACTER zusammen mit -f, wenn die Felder nicht durch Tabulatoren getrennt sind. Dieses Beispiel erzeugt semikolongetrennte Daten:
$ printf 'alice;admin\nbob;viewer\n' > team.txt
$ cut -d ';' -f 1 team.txt
alice
bob
Das Trennzeichen dieser Form besteht aus einem Zeichen. Setze ; in Anführungszeichen, weil ein ungeschütztes Semikolon in der Shell eine Steuerbedeutung besitzt.
Welcher Befehl gibt das zweite semikolongetrennte Feld von team.txt aus?
Zeilen ohne Trennzeichen behandeln
Im Feldmodus gibt cut eine Zeile normalerweise unverändert aus, wenn sie kein Trennzeichen enthält. Mit -s unterdrückst du solche Zeilen:
$ printf 'alice;admin\nheader\nbob;viewer\n' | cut -s -d ';' -f 2
admin
viewer
Damit wird keine allgemeine CSV-Datei ausgewertet. CSV kann geschützte Trennzeichen, eingebettete Zeilenumbrüche und Maskierungsregeln enthalten, die eine Aufteilung an einem einzelnen Zeichen nicht versteht. Verwende für solche Daten ein CSV-fähiges Werkzeug.
Was bewirkt -s bei cut -d ':' -f 1?
Von stdin lesen
Ohne benannte Datei oder mit - als Eingabeoperand liest cut von stdin. Dadurch eignet es sich gut als Pipeline-Stufe:
$ printf 'red:1\nblue:2\n' | cut -d ':' -f 1
red
blue
Woher liest cut in generate-data | cut -d ':' -f 1 seine Eingabe?
Mit diesen Übungen kannst du die Positions- und Feldauswahl praktisch trainieren:
- Linux cut Befehl: Textausschnitt – Extrahiere mit
cutbestimmte Spalten oder Felder aus Textdateien. - Sequenzsteuerung und Pipeline – Steuere Befehlsfolgen, verwende Pipelines und kombiniere Textwerkzeuge wie
cut,grep,wc,sortunduniq.
Lektion abgeschlossen
Sie haben cut abgeschlossen
Du kannst nun mit cut vorhersehbare Positionen aus zeilenorientiertem Text auswählen.
Wähle einzelne Zeichenpositionen oder Bereiche aus.
Extrahiere tabulatorgetrennte Felder mit
-f.Gib mit
-dein einzeichenlanges Trennzeichen an.Unterdrücke bei Bedarf Zeilen ohne Trennzeichen.
Lies strukturierte Texte aus Dateien oder stdin.
Lernfortschritt speichern
Erstellen Sie ein kostenloses Konto, um diese Lektion zu speichern und auf jedem Gerät weiterzulernen.
Kostenloses Konto erstellen